我想更改使用自定义注释注释的方法的主体。
我创建了自定义注释:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RunAsUser {
}
我写了特殊的处理程序:
@Aspect
@Component
public class RunAsUserAnnotationHandler {
@Before("@annotation(RunAsUser)")
public void configureAuthentication() {
AuthenticationUtil.configureAuthentication("ROLE_USER");
}
@After("@annotation(RunAsUser)")
public void clearAuthentication() {
AuthenticationUtil.clearAuthentication();
}
}
其中configureAuthentication(...)
和clearAuthentication()
是将另一个硬编码的主体值设置为SecurityContext
并将其返回默认值的方法。
如果要在注释中将主体值设置为String,如何修改代码?
我想看到这样的东西:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RunAsUser {
String userName();
}
并使用RunAsUser("stackoverflowUser")
编写我的代码,但是我现在知道如何将该值从注释传输到我的configureAuthentication
方法中。
有什么建议吗?
答案 0 :(得分:2)
将RunAsUser
类型的参数添加到configureAuthentication()
方法中。从此参数中获取值(“ stackoverflowUser”):
@Before("@annotation(RunAsUser)")
public void configureAuthentication(RunAsUser runAs) {
// do something with runAs.value()
}