使用Spring Security時,獲取bean中當前用戶名(即SecurityContext)信息的正確方法是什么?我有一個使用Spring Security的Spring MVC Web應用程序。我想知道當前登錄用戶的用戶名。我正在使用下面給出的代碼段。這是接受的方式嗎?我不喜歡在這個控制器中調用靜態方法 - 這違背了Spring的全部目的,恕我直言。有沒有辦法配置應用程序以注入當前的SecurityContext或當前的身份驗證? @RequestMapping(method = RequestMethod.GET)
public ModelAndView showResults(final HttpServletRequest request...) {
final String currentUser = SecurityContextHolder.getContext().getAuthentication().getName();
...
}
3 回答

慕尼黑8549860
TA貢獻1818條經驗 獲得超11個贊
如果您使用的是Spring Security ver> = 3.2,則可以使用@AuthenticationPrincipal
注釋:
@RequestMapping(method = RequestMethod.GET)public ModelAndView showResults(@AuthenticationPrincipal CustomUser currentUser, HttpServletRequest request) { String currentUsername = currentUser.getUsername(); // ...}
這CustomUser
是一個自定義對象,它實現UserDetails
了自定義返回的對象UserDetailsService
。
可以在Spring Security參考文檔的@AuthenticationPrincipal章節中找到更多信息。
添加回答
舉報
0/150
提交
取消