我使用方法級別的安全性。在類中我註釋了一些方法,表達式使用這個類的字段。但是我看到SpEL例外,我不能引用它們。 這是這個類的代碼的一部分。在表達式中,我想使用字段repPrefix,但我收到它是未知變量的異常。在Spring Security中使用類的字段進行註釋中的表達式
@Component("c2rTableManager")
@Scope("prototype")
public class C2RTableManager implements TableManager {
private final TableManager tableManager;
private final String repPrefix;
@Autowired
private SecurityInfoService securityInfoService;
public C2RTableManager(TableManager tableManager, String repository) {
this.tableManager = tableManager;
this.repPrefix = repository + "__";
}
...some methods
@Override
@PreAuthorize("hasRole('DBA') || hasPermission(repPrefix + #table, 'TABLE', 'DELETE_TABLE')")
public void dropTable(String table) throws InterruptedException, IOException {
tableManager.dropTable(table);
}
...other methods
}
如果我寫另一種方式,表達式根本不會被評估。不明白爲什麼。
@Component("c2rTableManager")
@Scope("prototype")
public class C2RTableManager implements TableManager {
private final TableManager tableManager;
private final String repPrefix;
@Autowired
private SecurityInfoService securityInfoService;
public C2RTableManager(TableManager tableManager, String repository) {
this.tableManager = tableManager;
this.repPrefix = repository + "__";
}
...some methods
@Override
public void dropTable(String table) throws InterruptedException, IOException {
dropTable(table, repPrefix);
}
@PreAuthorize("hasRole('DBA') || hasPermission(#repPrefix + #table, 'TABLE', 'DELETE_TABLE')")
public void dropTable(String table, String repPrefix) throws InterruptedException, IOException {
tableManager.dropTable(table);
}
...other methods
}
如何使用此類的字段值爲類的方法編寫表達式?
是什麼確切的:SPEL例外? – Ralph 2014-11-24 17:03:45
類似於未知變量,無法評估它等。 – Alex 2014-11-24 17:36:13
如果使用接口AOP代理,則來自同一實例的方法調用將不會評估任何註釋。 – holmis83 2014-11-24 17:58:41