Eri*_*rik 68 spring spring-security logout
可能答案很简单:如何在spring security中手动注销当前登录的用户?打电话是否足够:
SecurityContextHolder.getContext().getAuthentication().setAuthenticated(false);
Run Code Online (Sandbox Code Playgroud)
?
Grz*_*zki 66
我很难确定你的代码是否足够.但是,标准的Spring-security的注销实现是不同的.如果你看一下SecurityContextLogoutHandler你会看到他们这样做:
SecurityContextHolder.clearContext();
Run Code Online (Sandbox Code Playgroud)
此外,他们可选择使HttpSession无效:
if (invalidateHttpSession) {
HttpSession session = request.getSession(false);
if (session != null) {
session.invalidate();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在其他一些关于在Spring Security中注销并查看源代码的org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler问题中找到更多信息.
Pio*_*ler 37
在Servlet 3.0容器中,Spring注销功能与servlet集成,您只需调用logout()您的HttpServletRequest.仍然需要编写有效的响应内容.
根据文档(Spring 3.2):
HttpServletRequest.logout()方法可用于记录当前用户.
通常这意味着SecurityContextHolder将被清除,HttpSession将被无效,任何"记住我"身份验证将被清除,等等.
小智 21
我在LogoutFilter中使用相同的代码,重用LogoutHandler如下:
public static void myLogoff(HttpServletRequest request, HttpServletResponse response) {
CookieClearingLogoutHandler cookieClearingLogoutHandler = new CookieClearingLogoutHandler(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY);
SecurityContextLogoutHandler securityContextLogoutHandler = new SecurityContextLogoutHandler();
cookieClearingLogoutHandler.logout(request, response, null);
securityContextLogoutHandler.logout(request, response, null);
}
Run Code Online (Sandbox Code Playgroud)
Rit*_*esh 10
您还可以将SessionRegistry用作:
sessionRegistry.getSessionInformation(sessionId).expireNow();
Run Code Online (Sandbox Code Playgroud)
如果要强制在用户的所有会话中注销,请使用每个会话信息的getAllSessions方法和调用expireNow.
编辑
这就需要ConcurrentSessionFilter(或链中的任何其他过滤器),用于检查SessionInformation,并呼吁所有注销处理程序,然后执行重定向.
Jam*_*mes 10
要在Web应用程序中注销用户,您还可以将其重定向到注销页面.LogoutFilter然后为您完成所有工作.
注销页面的URL在安全配置中设置:
<sec:http ...>
...
<sec:logout logout-url="/logout" logout-success-url="/login?logout_successful=1" />
...
</sec:http>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86141 次 |
| 最近记录: |