gpt4 book ai didi

java - Spring Security主体转换

转载 作者:行者123 更新时间:2023-12-02 01:48:19 26 4
gpt4 key购买 nike

有没有办法在将 Spring Security 主体注入(inject) RestController 方法之前对其进行转换?

假设我定义了以下类:

@RestController
public class MyController {
@GetMapping("/test")
public void getWithPrincipalA(@AuthenticationPrincipal PrincipalTypeA a) {
...
}

@GetMapping("/test")
public void getWithPrincipalB(@AuthenticationPrincipal PrincipalTypeB b) {
...
}
}

我知道这些 Controller 方法不明确,我可以做一些事情来解决这个问题,但我宁愿做的是将 @AuthenticationPrincipal 转换为我可以自己定义的某种类型。结果会变成这样:

@RestController
public class MyController {
@GetMapping("/test")
public void getWithTransformedPrincipal(@AuthenticationPrincipal MyTransformedPrincipal principal) {
...
}
}

现在我基本上可以为多个不同的身份验证主体定义一个 Controller ,而无需更改 API。

如有任何帮助,我们将不胜感激:)

最佳答案

为了让事情变得简单和透明,您可以简单地转换 Controller 方法中的主体并从那里分派(dispatch)通用主体。

@RestController
public class MyController {
@GetMapping("/test")
public void getWithTransformedPrincipal(@AuthenticationPrincipal Principal principal) {
GenericPrincipal generic = PrincipalTransformer.transform(principal);
doSomethingWithPrincipal(generic);
}
}

关于java - Spring Security主体转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53391811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com