Spring安全性在PreAuthorize中使用hasPermission只有一个参数

时间:2013-10-15 23:21:26

标签: java spring security spring-security acl

如何只用一个参数调用hasPermission函数?

目前我有这样的事情:

@PreAuthorize("hasPermission('someResource', 'READ')")

我希望能够做到这一点:

@PreAuthorize("hasPermission('canReadSomeResource')")

有没有简单的方法来实现这一目标?我基本上只想指定调用方法所需的权限,而不是资源和权限。

2 个答案:

答案 0 :(得分:2)

hasPermission()的特定目的是检查用户是否有权对特定域对象执行操作。如果您只想检查用户是否具有某个通用权限,则应使用hasRole()

答案 1 :(得分:0)

我认为您需要hasAuthority('canReadSomeResource')来检查用户访问资源的权限。

@PreAuthorize("hasAuthority('canReadSomeResource')")
public void myMethod(){
   ...
}

通过实现canReadSomeResource接口,可以向spring安全性提供该权限(UserDetailsService)。