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);
}
这是代码,如何手动登录用户(如果有人需要):
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);
}
其中authenticationProvider是您实现的spring配置中的bean
org.springframework.security.authentication.AuthenticationProvider
您只需使会话无效并且用户已注销.servlet api:HttpSession.invalidate()直接支持这一点.您可以编写一个仅调用invalidate的控制器.
class Logout implements Controller{
 public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response){
   ModelAndView view = //?;
   request.getSession().invalidate();
   return view;
 }      
}
| 归档时间: | 
 | 
| 查看次数: | 22521 次 | 
| 最近记录: |