在我的spring应用程序中,我的控制器和服务类中的方法将此注释用于安全目的:
@PreAuthorize("hasPermission(#user, 'cadastra')")
第二个参数,即权限,应具有以下格式:
<<action_name>>_<<class_name>>
我应该用什么表达来实现这一点,考虑到班级名称由this.getClass().getName()
持有?
答案 0 :(得分:10)
要在Spring EL中连接两个字符串,请使用concat
函数。有关详细信息,请参见此处
Spring EL docs
例如,我使用了以下内容:
@PreAuthorize("hasRole('ROLE_'.concat(this.class.simpleName))")
答案 1 :(得分:2)
我终于解决了这个问题。我在我的控制器中添加了一个新方法:
public String getName() {
String expressao = entityClass.getName();
String nome_classe = new String();
StringTokenizer st = new StringTokenizer(expressao, ".");
while (st.hasMoreTokens()) {
nome_classe = st.nextToken();
}
System.out.println("getName nome_class = "+nome_classe);
return nome_classe;
}
现在我以这种方式使用注释:
@PreAuthorize("hasPermission(#user, 'cadastra_'+#this.this.name)")