【发布时间】:2011-06-28 18:42:38
【问题描述】:
我使用基本 HTTP 身份验证通过基本 LDAP 授权改进了我的 GWT/GXT 应用程序。当我启动新浏览器时,它运行良好 - 我收到提示并获得针对公司 LDAP 的授权。我的问题 - 除非我关闭/重新打开浏览器,否则我无法注销。我可以调试一下,看看SecurityContextLogoutHandler#logout是怎么调用的,下面的代码是怎么执行的
if (invalidateHttpSession) {
HttpSession session = request.getSession(false);
if (session != null) {
session.invalidate();
}
}
SecurityContextHolder.clearContext();
但是,当站点重新加载时,它似乎没有任何效果,除非我重新启动浏览器,否则我永远不会收到另一个 HTTP 身份验证提示(即使清除缓存/cookie 也无济于事)。这是 applicationContext.xml 的相关部分
<security:http auto-config='true'>
<security:intercept-url pattern="/reports/**" access="ROLE_USER" />
<security:http-basic />
<security:logout logout-url="/reports/logout"
logout-success-url="/reports/Application.html" />
</security:http>
我尝试定义自定义 LogoutSuccessHandler 并执行 authentication.setAuthenticated(false); 但这也没有效果
这里有什么我想念的吗?非常感谢您的帮助
【问题讨论】:
标签: spring-security basic-authentication logout