我正在使用自定义方法为我的Spring安全预授权注释,我需要传递一长串的perms。我想在外部存储该列表,因为它在一些地方使用但我似乎无法弄清楚如何参考上述清单。似乎永远都是空的。
@RestController
@RequestMapping("/example")
public class MyController {
...constructor/other stuff
public List<String> perms_I_want_to_reference = Arrays.asList("super","long","list")
@PreAuthorizze("@securityService.MyCustomMethod(principal, *this where I want to reference perms*)
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<?>doSomethingTopSecret(){
}
}
我尝试了#并使列表静态并使用T
但到目前为止没有任何工作。
答案 0 :(得分:1)
从注释访问字段的唯一方法是通过反射。为了做到这一点,Spring需要访问该类的字段。我没有听说过在计算表达式时获取对当前类的引用的方法,但是实现所需的一种方法是引用bean本身并访问该字段:
public List<String> perms_I_want_to_reference = Arrays.asList("super","long","list");
@PreAuthorizze("@securityService.MyCustomMethod(principal, @myController.perms_I_want_to_reference)")
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<?>doSomethingTopSecret(){ }