我的应用程序在成功登录后向响应中添加了一个cookie 'XYZ'。此 Cookie 确定应用程序登录后的特定行为。
我使用shiro FormAuthenticationFilter,这就是cookie的添加方式。
@Override
public boolean onLoginSuccess(AuthenticationToken token, Subject subject, ServletRequest
request, ServletResponse response) throws Exception {
Cookie cookie = new Cookie('XYZ', '123');
cookie.setPath("/");
cookie.setMaxAge(-1);
response.addCookie(cookie);
}
使用 HTMLUnit 断言此行为的功能测试失败,因为此 cookie 设置不正确。当我在 Chrome 中使用该应用程序时,它运行良好。调试 HTMLUnit 测试证明,成功登录后使用以下方法,
driver.manage.getCookies()
仅返回 JESSIONID cookie,而不返回应用程序设置的其他 cookie "XYZ"。
注意:如果我在登录后以外的任何页面上设置此cookie,htmlunit会选择它。
请问有什么想法吗?
很难猜测为什么某些东西在登录后以外的任何页面上有效,但在登录本身中不起作用,这只是另一个页面。特别是如果您没有提供任何代码。
显而易见的非代码答案是:登录名正在执行与页面其余部分不同的操作。找到它是什么并修复它。
运用我的想象力,只是提到这里可能发生的一百件事之一,我敢打赌问题是你正在根据未正确执行或接收的 AJAX 调用设置该 cookie。