[英]Spring Security Principal transformation
在將Spring Security Principal注入RestController方法之前,是否有辦法對其進行轉換?
假設我已經定義了以下類:
@RestController
public class MyController {
@GetMapping("/test")
public void getWithPrincipalA(@AuthenticationPrincipal PrincipalTypeA a) {
...
}
@GetMapping("/test")
public void getWithPrincipalB(@AuthenticationPrincipal PrincipalTypeB b) {
...
}
}
我知道這些控制器方法是模棱兩可的,我可以做一些事情來解決這個問題,但是我寧願做的就是將@AuthenticationPrincipal
轉換為我可以定義自己的某種類型。 結果將變為:
@RestController
public class MyController {
@GetMapping("/test")
public void getWithTransformedPrincipal(@AuthenticationPrincipal MyTransformedPrincipal principal) {
...
}
}
現在,我基本上可以為幾個不同的身份驗證主體定義一個控制器,而無需更改API。
任何幫助,將不勝感激 :)
要使事情保持簡單和透明,您只需在控制器方法中轉換主體,然后從那里分派泛型主體即可。
@RestController
public class MyController {
@GetMapping("/test")
public void getWithTransformedPrincipal(@AuthenticationPrincipal Principal principal) {
GenericPrincipal generic = PrincipalTransformer.transform(principal);
doSomethingWithPrincipal(generic);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.