2016-11-20 47 views
0

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

回答

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方法

相关问题