文章目录
前言
spring security 3.0
已经可以使用spring el
表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。
常见的表达式
Spring Security可用表达式对象的基类是SecurityExpressionRoot。
表达式 | 描述 |
---|---|
hasRole ([role]) |
用户拥有制定的角色时返回true (Spring security 默认会带有ROLE_ 前缀),去除参考Remove the ROLE_ |
hasAnyRole ([role1,role2]) |
用户拥有任意一个制定的角色时返回true |
hasAuthority ([authority]) |
等同于hasRole ,但不会带有ROLE_ 前缀 |
hasAnyAuthority ([auth1,auth2]) |
等同于hasAnyRole |
permitAll |
永远返回true |
denyAll |
永远返回false |
anonymous |
当前用户是anonymous 时返回true |
rememberMe |
当前勇士是rememberMe 用户返回true |
authentication |
当前登录用户的authentication 对象 |
fullAuthenticated |
当前用户既不是anonymous 也不是rememberMe 用户时返回true |
hasIpAddress('192.168.1.0/24') |
请求发送的IP匹配时返回true |
部分代码:
......
private String defaultRolePrefix = "ROLE_"; //ROLE_前缀
/** Allows "permitAll" expression */
public final boolean permitAll = true; //全部true
/** Allows "denyAll" expression */
public final boolean denyAll = false; //全部false
public final boolean permitAll() {
return true;
}
public final boolean denyAll() {
return false;
}
public final boolean isAnonymous() {
//是否是anonymous
return trustResolver.isAnonymous(authentication);
}
public final boolean isRememberMe() {
//是否是rememberme
return trustResolver