权限服务
注:可以通过 console 打开鉴权的 trace 日志,如:
DebugUtils.setLogLevel(ctx.secPermissionService.class, "TRACE")
| Modifiers | Name | Description |
|---|---|---|
static String |
CACHE_NAME |
|
static Integer |
aliasOverridingOrder |
| Type | Name and description |
|---|---|
ErrorService |
errorService |
SecRoleService |
secRoleService |
SecUserService |
secUserService |
grails.plugin.springsecurity.SpringSecurityService |
springSecurityService |
| Type | Name and description |
|---|---|
void |
bootStrapInit()初始化 |
void |
clearCache(Long userId = null, String sessionId = null)清理鉴权结果缓存 |
String |
executeHqlScript(String hqlScript, Map perm, User user, Map others)执行 hql 接口,并返回 hql |
Set<Long> |
filterGrantedPermIds(Collection<Long> permIds, Object userIdent)@return 授权成功的权限ID集 |
Map |
findPermission(Integer type, String code, Map options) |
Permission |
get(String code, Domain domain, DomainApplication application)根据代码和所属应用或域,获得生效的权限对象 |
Permission |
get(String code)根据代码获得不属于任何应用和域的权限对象 |
Permission |
get(String code, Domain domain)根据代码和所属域,获得权限对象 |
Permission |
get(String code, DomainApplication application)根据代码和所属应用,获得权限对象 |
Permission |
getAny(String code)根据代码获得任意一个权限对象 |
Permission |
getCurrent(String code)根据代码获得当前生效的权限对象 |
static String |
getPermissionQueryHql(Boolean selectRoleOnly, Boolean fromPermissionGroup, Boolean withMultiPermission) |
Granted |
isActionGranted(String controllerName, String actionName, Map params, Object userIdent = null, Object bean = null)对控制器操作资源进行鉴权 |
Granted |
isGranted(String code, Object userIdent = null, Object bean = null, Map options = null)对权限进行鉴权 |
Granted |
isGranted(Map perm, Object userIdent = null, Object bean = null, Map options = null)对权限进行鉴权 |
Granted |
isGranted(Permission perm, Object userIdent = null, Object bean = null)对权限进行鉴权 |
Granted |
isUrlGranted(String url, Object userIdent = null)通过 Requestmap 对 url 鉴权 |
| Methods inherited from class | Name |
|---|---|
class Object |
Object#wait(long, int), Object#wait(long), Object#wait(), Object#equals(Object), Object#toString(), Object#hashCode(), Object#getClass(), Object#notify(), Object#notifyAll() |
初始化
清理鉴权结果缓存
userId - 删除对应员工的缓存;如果为 null 且 sessionId 也为空,则清空缓存sessionId - 删除对应 session 的缓存;如果为 null 且 userId 也为空,则清空缓存执行 hql 接口,并返回 hql
根据代码和所属应用或域,获得生效的权限对象
code - 权限代码,支持通配符 *根据代码获得不属于任何应用和域的权限对象
code - 权限代码,支持通配符 *根据代码和所属域,获得权限对象
code - 权限代码,支持通配符 *根据代码和所属应用,获得权限对象
code - 权限代码,支持通配符 *根据代码获得任意一个权限对象
code - 权限代码,支持通配符 *根据代码获得当前生效的权限对象
code - 权限代码,支持通配符 *对控制器操作资源进行鉴权
对权限进行鉴权
code - 权限、权限组编码,或 URL 映射(Requestmap)的完整 URL(否则请使用 isUrlGranted 方法)userIdent - 需要鉴权的用户;
可以是Employee(员工对象)/EmployeeIdentity(员工身份对象)/User(用户对象)/username(用户名)/userId(用户ID,Long类型)/null(当前用户)。options.applicationId - 角色所属应用或应用IDoptions.domainId - 角色所属域或域IDoptions.xxx - 其他会传递给权限 condition 的参数,如关联文档的 referenceClass、referenceId、referenceBizId 等。对权限进行鉴权
perm - 包含权限 id、code、allGranted、impersonateGranted、(Map) condition 的 Map 对象对权限进行鉴权
perm - 权限对象通过 Requestmap 对 url 鉴权
url - 满足 URL 映射的地址