2016-11-20 45 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方法

相關問題