簡體   English   中英

Spring Security Principal轉換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM