Spring Security获取某个用户能ACL操作的对象ID

Spring Security里只找到了检查某个用户能否操作某个对象的方法,如hasPermission
没找到获取用户能够对某类对象进行ACL操作的ID列表的方法

时间紧,只好自己用sql从ACL表里查了

select distinct a.object_id_identity from acl_object_identity a 
inner join acl_entry b on a.id=b.acl_object_identity
--检查ACL权限MASK
and b.mask in (:mask)
--检查className
and a.object_id_class=(select ID as class_id from acl_class where class=:className)
inner join acl_sid c on b.sid=c.id
and
--用户权限或者角色权限都可以
((c.principal=1 and c.sid=:username) or (c.principal=0 and c.sid in :roles))


:mask见BasePermission.xxx.getMask()
:roles可以从session里取

Collection<GrantedAuthority> authorities=SecurityContextHolder.getContext().getAuthentication().getAuthorities()


其实在我的项目里role被扩展为permission了
SpringSecurity里的User/Role两层结构肯定是不够用的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值