亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用Spring Security時,獲取bean中當前用戶名(即SecurityContext)

使用Spring Security時,獲取bean中當前用戶名(即SecurityContext)

30秒到達戰場 2019-08-23 15:46:45
使用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 回答

?
慕少森

TA貢獻2019條經驗 獲得超9個贊

如果您使用的是Spring 3,最簡單的方法是:

 @RequestMapping(method = RequestMethod.GET)   
 public ModelAndView showResults(final HttpServletRequest request, Principal principal) {

     final String currentUser = principal.getName();

 }


查看完整回答
反對 回復 2019-08-23
?
慕尼黑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章節中找到更多信息。


查看完整回答
反對 回復 2019-08-23
?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

Principal在控制器方法中定義為依賴項,spring將在調用時在方法中注入當前經過身份驗證的用戶。


查看完整回答
反對 回復 2019-08-23
  • 3 回答
  • 0 關注
  • 3148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號