首頁 > Java > java教程 > 主體

如何在 Spring 應用程式中檢索活動使用者的使用者詳細資訊?

Patricia Arquette
發布: 2024-11-05 04:37:02
原創
490 人瀏覽過

How to Retrieve the Active User's UserDetails in a Spring Application?

擷取活動使用者的使用者詳細資料

在Spring 應用程式中使用控制器時,可以透過存取來擷取活動使用者的詳細資訊UserDetails 實作。

<code class="java">User activeUser = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();</code>
登入後複製

雖然此方法有效,但可以使用依賴注入來簡化。

使用 @AuthenticationPrincipal 註解

中Spring Security 3.2及更高版本,可以使用@AuthenticationPrincipal註解。這個優雅的解決方案可以將 UserDetails 物件直接注入到控制器或方法中。

<code class="java">public ModelAndView someRequestHandler(@AuthenticationPrincipal User activeUser) {
    ...
}</code>
登入後複製

使用 ArgumentResolvers

Spring Security 3.2 之前,或者如果需要自訂,可以使用參數解析器。可以建立 WebArgumentResolver,如 CurrentUserWebArgumentResolver 來建立 WebArgumentResolver,如 CurrentUserWebArgumentResolver 來自動解析 UserDetails 物件。

<code class="java">public class CurrentUserWebArgumentResolver implements WebArgumentResolver {
    @Override
    public Object resolveArgument(...) {
        if (...) {
            return (User) ((Authentication) principal).getPrincipal();
        } else {
            return WebArgumentResolver.UNRESOLVED;
        }
    }
}</code>
登入後複製

此解析器需要在應用程式的設定中註冊。

Spring 3.1 : HandlerMethodArgumentResolver

在 Spring 3.1 中,建議使用 HandlerMethodArgumentResolver,如 CurrentUserHandlerMethodArgumentResolver。它提供了與 WebArgumentResolver 類似的功能。

<code class="java">public class CurrentUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
    @Override
    public Object resolveArgument(...) {
        if (...) {
            return (User) ((Authentication) principal).getPrincipal();
        } else {
            return WebArgumentResolver.UNRESOLVED;
        }
    }
}</code>
登入後複製

這個解析器也需要在設定中註冊。

透過利用這些方法,你可以優雅地獲取活躍用戶的 UserDetails您的控制器,增強 Spring 應用程式程式碼的可維護性和可讀性。

以上是如何在 Spring 應用程式中檢索活動使用者的使用者詳細資訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!