这是我的代码看起来像:
public class MyController {
@Value("${resource.clientId}") // this value is retreiving from vault
private String clientId;
@PreAuthorize("isClient(#clientId)") //isClient a custom security method
public String Mymethod(Authentication authentication){
}
}
如果我使用clientId作为Mymethod的参数,那么它工作正常。但同时我面临着一个问题,如“无法找到占位符资源.clientId”,由于保管库APPROLE令牌到期。
因此决定将方法arg更改为类级变量,就像上面一样。但是这个@PreAuthorize [@PreAuthorize(“isClient(#clientId)”)]逻辑没有选择客户端ID。有人能分享一个合适的方法来解决这个问题吗?我需要使用哪个表达式来解决这个问题?
2条答案
按热度按时间mwg9r5ms1#
最后,我找到了一个解决方案来做到这一点-我不确定有没有比这更好的解决方案。
使用非静态方法将保险库值注入到静态变量中,最后将该静态变量传递给@PreAuthorize自定义方法。我希望,这对其他人也有帮助。
nbysray52#
另一个答案是创建一个
@Component
,如本期所述:https://stackoverflow.com/a/61080418/2489730