在控制器中擷取活動使用者的UserDetails 的優雅方式
在Spring 應用程式中,取得登入使用者的UserDetails 可以透過存取來實作身分驗證上下文並將主體強制轉換為UserDetails 實作。但是,這種方法可能不太方便或直觀。
要簡化此過程,請考慮以下優雅的解決方案:
使用@AuthenticationPrincipal 註解(Spring Security 3.2 ):
Security 3.引入了@AuthenticationPrincipal 註解,它允許將經過身份驗證的使用者的UserDetails 自動注入到控制器方法中。Controller:
<code class="java">public ModelAndView someRequestHandler(@AuthenticationPrincipal User activeUser) { // Logic utilizing the activeUser object }</code>
Spring 3.1 的HandlerMethodArgumentResolver :
<code class="java">public class CurrentUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver { // Implementation to check for eligible method parameters and retrieve the User object }</code>
設定:
<code class="java">@Configuration public class ApplicationConfig { // Bean definition for the CurrentUserHandlerMethodArgumentResolver }</code>
參數解析器:
<code class="java">public class CurrentUserWebArgumentResolver implements WebArgumentResolver { // Implementation for method parameter validation and User object retrieval }</code>
設定:
<code class="java">@Configuration public class ApplicationConfig { // Bean definition for the CurrentUserWebArgumentResolver }</code>選擇的解將取決於應用程式的Spring 版本和具體要求。然而,這些方法提供了一種優雅且一致的方式來存取控制器中活動使用者的 UserDetails。
以上是如何在 Spring 控制器中優雅地擷取活動使用者的 UserDetails?的詳細內容。更多資訊請關注PHP中文網其他相關文章!