Nir*_*mal 7 java spring spring-mvc
我是Spring Web MVC的新手..
我可以获得一些示例或在线链接,向我展示如何使用spring web mvc实现注销功能吗?
我不想使用弹簧安全的内置功能(即ACEGI)..
提前致谢...
30t*_*thh 14
会话失效的诀窍不起作用.似乎Spring身份验证会在某处缓冲会话ID,并且如果会话失效,则甚至接受COOKIE.
另一种解决方案是手动清除Spring安全上下文:
public void manualLogout() {
SecurityContextHolder.getContext().setAuthentication(null);
}
Run Code Online (Sandbox Code Playgroud)
这是代码,如何手动登录用户(如果有人需要):
public void doManualLogin(HttpServletRequest request, String u, String p) {
UsernamePasswordAuthenticationToken token =
new UsernamePasswordAuthenticationToken(u, p);
token.setDetails(new WebAuthenticationDetails(request));
Authentication auth = authenticationProvider.authenticate(token);
SecurityContextHolder.getContext().setAuthentication(auth);
}
Run Code Online (Sandbox Code Playgroud)
其中authenticationProvider是您实现的spring配置中的bean
org.springframework.security.authentication.AuthenticationProvider
Run Code Online (Sandbox Code Playgroud)
您只需使会话无效并且用户已注销.servlet api:HttpSession.invalidate()直接支持这一点.您可以编写一个仅调用invalidate的控制器.
class Logout implements Controller{
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response){
ModelAndView view = //?;
request.getSession().invalidate();
return view;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22521 次 |
| 最近记录: |