Spring Security:在Preauthorize注释中获取控制器类

时间:2016-11-20 21:34:25

标签: spring spring-security

我在Spring应用程序中使用的许多控制器都扩展了一个公共抽象类。因此,这些方法在抽象类中声明。 我想申请一个' PreAuthorize'在抽象方法中的条件,但我需要获取被调用的实际控制器类的名称以传递给EL评估器。 有办法吗?

1 个答案:

答案 0 :(得分:0)

在抽象类中实现BeanNameAware接口。

public abstract class MyController implements BeanNameAware{

String beanName; 

   @Override
public void setBeanName(final String beanName) {
    this.beanName = beanName;
}

@Override
public String getBeanName() {
    return beanName;
}
}

您将获得实际bean名称而不是常规代理。如果您需要进一步定制实现BeanFactoryAware。您可以在预授权的SpEl中使用该getBeanName方法