我的应用程序在成功登录后向响应中添加了一个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会选择它。
请问?
答案 0 :(得分:0)
很难猜测为什么某些内容可以在除登录后之外的任何页面上运行,而不是在登录本身,这只是另一个页面。特别是如果您没有提供任何代码。
明显的非代码答案是:登录正在执行与页面其余部分不同的操作。找到它是什么并修复它。
运用我的想象力,只提及这里可能发生的一百件事情之一,我打赌问题是你是根据未正确执行或接收的AJAX调用来设置cookie。