使用 Spring 表达式进行安全保护
借助 access() 方法,可以将 SpEL 作为声明访问限制的一种方式。例如,如下就是使用 SpEL 表达式来声明具有 ROLE_SPITTER 角色才能访问 /spitter/me URL:
如果当前用户被授予了给定角色的话,那 hasRole() 表达式的计算结果就为 true。
如果你想限制 /spitter/me URL 的访问,不仅需要 ROLE_SPITTER,还需要来自指定的 IP 地址,那么我们可以按照如下的方式调用 access() 方法:
下表列出了 Spring Security 支持的所有 SpEL 表达式:
安全表达式
计算结果
authentication
用户的认证对象
denyAll
结果始终为 false
hasAnyRole(list of roles)
如果用户被授予了列表中任意的指定角色,结果为 true
hasRole(role)
如果用户被授予了指定的角色,结果为 true
hasIpAddress(IP Address)
如果请求来自指定 IP 的话,结果为 true
isAnonymous()
如果当前用户为匿名用户,结果为 true
isAuthenticated()
如果当前用户进行了认证的话,结果为 true
isFullyAuthenticated()
如果当前用户进行了完整认证的话(不是通过 Remember-me 功能进行的认证),结果为 true
isRememberMe()
如果当前用户是通过 Remember-me 自动认证的,结果为 true
permitAll
结果始终为true
principal
用户的principal对象
Last updated