2015-06-16 20 views
1

用戶註冊成功後,我試圖將用戶重定向到登錄頁面後嘗試獲取活動用戶來自SecurityContextHolder.getContext()。getAuthentication();這是返回null。Spring Security:SecurityContextHolder.getContext()。在用戶註冊用戶並重定向到登錄頁面後,getAuthentication()返回NULL

這裏是我如何設置背景下,當用戶註冊成功

UsernamePasswordAuthenticationToken authenticatedUser = new UsernamePasswordAuthenticationToken(userDetails.getUsername(), userDetails.getPassword(), userDetails.getAuthorities()); 
authenticatedUser.setDetails(userDetails); 

if(authenticatedUser.isAuthenticated()) { 
     SecurityContextHolder.getContext().setAuthentication(authenticatedUser); 
} 

然後我使用response.sendRedirect是(URL)重定向用戶到X頁面;

在控制器方法我試圖以當前用戶爲

@RequestMapping("/<pattern>") 
public @ResponseBody <method_name>(HttpServletRequest req,HttpServletResponse resp){ 
    Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 
     if(auth==null){ 
      System.out.println("this is null"); 
     } 
     else{ 
      // do something 
     } 
} 

我看到在控制檯中的文字爲「這是空」。

如何從SecurityContext()中通過用戶期限保留currentuser/Principal直到用戶註銷。

+1

檢查[this](http://www.mkyong.com/spring-security/get-current-logged-in-username-in-spring-security/)獲取當前記錄器用戶名。獲取所有詳細信息'User user = SecurityContextHolder.getContext()。getAuthentication()。getPrincipal();' – pise

+0

什麼是登錄? – ikumen

+0

@ user2264997這是一個錯字錯誤。我現在編輯它。 – Giridhar

回答

0

我得到了解決方案。

問題在於該特定URI組的標記的模式屬性。

此前它是/ path/*並且它失敗了。我將其更改爲/ path/**並且它工作正常。

如果有人可以在這兩種模式匹配(/ *和/ **)之間解釋,這將是有幫助的。

+0

http標記的模式屬性 – Giridhar

相關問題