2016-11-30 41 views
-1

我使用angularjs彈簧安全3.2.7和部署在Tomcat 6中使用此代碼登錄操作我使用Spring Security的3.2.7和Tomcat 6,我雜草進行註銷按鈕

@RequestMapping(value = "/login", method = RequestMethod.POST) 
public @ResponseBody Map<String, ? extends Object> login(
         HttpServletRequest request, 
         @RequestParam String userName, 
         @RequestParam String password) { 
    Map<String, Object> response = new HashMap<String, Object>(); 
    logger.info("RegistreController Login..."); 
    logger.info("Start Login for the user :"+userName); 
    try{ 
    String encodedPassword = hashPassword(password); 
    System.out.println("encodedPassword = "+encodedPassword); 

    final UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(userName, encodedPassword); 

    // this function returns UsernamePasswordAuthenticationToken(user, password, authorities) 
    final Authentication authentication = authenticationProvider.authenticate(authRequest); 

    SecurityContextHolder.getContext().setAuthentication(authentication); 
    Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 

    CustomUser user = null; 
    if (principal instanceof CustomUser) { 
     user = ((CustomUser)principal); 
    } 
}catch(Exception e) { 
    if(e instanceof CredentialsExpiredException){ 
     response.put("expired", true); 
    } 
    response.put("success", false); 
    response.put("msg", e.getMessage()); 
    logger.fatal(new MasterProtectionLogger().reportError("UserAdminController.login()", e, logger)); 
} 
    return response; 
} 

我需要寫代碼註銷(不要調用j_spring_security_logout) 我該怎麼做?

回答

0

重點線是:

SecurityContextHolder.clearContext(); 

你也可能要失效HTTP會話。

相關問題