Spring Security 基于表达式的权限控制

本文介绍了Spring Security中基于表达式的权限控制,包括URL安全和Method安全表达式。URL安全表达式允许根据复杂的布尔逻辑控制访问权限。在Web安全表达式中可以引用bean,例如RbacServiceImpl。在Method安全表达式方面,详细讲解了@PreAuthorize、@PostAuthorize、@PreFilter和@PostFilter等注解的用法,展示了如何在方法参数和返回结果上进行权限过滤。
摘要由CSDN通过智能技术生成

前言


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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值