30秒到達(dá)戰(zhàn)場
2019-08-23 15:46:45
使用Spring Security時(shí),獲取bean中當(dāng)前用戶名(即SecurityContext)信息的正確方法是什么?我有一個(gè)使用Spring Security的Spring MVC Web應(yīng)用程序。我想知道當(dāng)前登錄用戶的用戶名。我正在使用下面給出的代碼段。這是接受的方式嗎?我不喜歡在這個(gè)控制器中調(diào)用靜態(tài)方法 - 這違背了Spring的全部目的,恕我直言。有沒有辦法配置應(yīng)用程序以注入當(dāng)前的SecurityContext或當(dāng)前的身份驗(yàn)證? @RequestMapping(method = RequestMethod.GET)
public ModelAndView showResults(final HttpServletRequest request...) {
final String currentUser = SecurityContextHolder.getContext().getAuthentication().getName();
...
}
3 回答
慕尼黑8549860
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
如果您使用的是Spring Security ver> = 3.2,則可以使用@AuthenticationPrincipal注釋:
@RequestMapping(method = RequestMethod.GET)public ModelAndView showResults(@AuthenticationPrincipal CustomUser currentUser, HttpServletRequest request) {
String currentUsername = currentUser.getUsername();
// ...}這CustomUser是一個(gè)自定義對象,它實(shí)現(xiàn)UserDetails了自定義返回的對象UserDetailsService。
可以在Spring Security參考文檔的@AuthenticationPrincipal章節(jié)中找到更多信息。
qq_笑_17
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
Principal在控制器方法中定義為依賴項(xiàng),spring將在調(diào)用時(shí)在方法中注入當(dāng)前經(jīng)過身份驗(yàn)證的用戶。
添加回答
舉報(bào)
0/150
提交
取消
