我目前正在努力避免安全注释中的文字。原因是,在大型应用程序中,这些注释中包含文字会依赖于多个错误,而且重构权限名称也会更容易。
我创建了一个
@Bean
,它的目的是注册我想要的Enum
包,然后以这种方式在@Preautorize
注释中使用@PreAuthorize("hasAuthority(T(Permissions).CREATE)")
@Bean
static MethodSecurityExpressionHandler methodSecurityExpressionHandler() {
return new DefaultMethodSecurityExpressionHandler() {
@Override
public StandardEvaluationContext createEvaluationContext(Supplier<Authentication> authentication,
MethodInvocation mi) {
StandardEvaluationContext evaluationContext =
(StandardEvaluationContext) super.createEvaluationContext(authentication, mi);
((StandardTypeLocator) evaluationContext.getTypeLocator())
.registerImport(PermissionName.class.getPackage().getName());
return evaluationContext;
}
};
}
但是函数
T()
无法解析类Permissions
。
关于我正在研究Spring Boot的技术信息
3.2.4
。
如果您需要更多信息或讨论它,请免费!感谢您的帮助!
如果您使用自定义
MethodSecurityExpressionHandler
,请确保您不使用@EnableMethodSecurity(prePostEnabled = true)
但是函数 T() 无法解析类 Permissions。
然后你使用: .registerImport(PermissionName.class.getPackage().getName());