《Spring Security》第二十二章 Expression-Based Access Control - 基于表达式的访问控制

第二十二章 Expression-Based Access Control - 基于表达式的访问控制

Spring Security 使用 SpringEL 作为表达式支持。

一、常用的内置表达式

Expression Description
hasRole([role]) 主体是有具有指定角色
hasAnyRole([role…]) 主体是有具有指定角色之一
hasAuthority([authority]) 是否具有指定权限
hasAnyAuthority([authority…]) 是否具有指定权限之一
principal 允许直接访问主体对象
authentication 允许直接从 SecurityContext 获取当前主体
permitAll 总是为true
denyAll 总是为false
isAnonymous() 是否是匿名用户
isRememberMe() 是否是 remember-me 用户
isAuthenticated() 是否不是匿名用户
isFullyAuthenticated() 是否不是匿名用户,且不是remember-me 用户
hasPermission(Object target,Object permission) 用户是否可以访问权限为permission的目标
hasPermission(Object targetId,String targetType,Object permission) 用户是否可以访问权限为permission的目标

二、方法注解表达式

这两个注解 @PreAuthorize("hasRole('USER')")@PreAuthorize("hasPermission(#contact, 'ADMIN')") 能够使用在具体的方法上,以一个方法参数作为表达式的一部分,来决定当前用户是否拥有给定的权限。

文章作者: koral
文章链接: http://luokaiii.github.io/2019/07/24/读书笔记/《SpringSecurity》/22.ExpressionControl/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自