关于Shiro框架权限标识符中*使用的总结

#关于Shiro框架权限标识符中*使用的总结

Shiro框架中独创的权限标识符(Wildcard Perssions)可以很优雅的开发一些权限控制应用。基本规则官方文档说的很清楚了,这里记一下使用时碰到的一些问题。

###关于权限标识符中*的使用 Shiro权限标识符的的默认规则:

规则:“资源标识符:操作:对象实例ID” 即对哪个资源的哪个实例可以进行什么操作。其默认支持通配符权限字符串,“:”表示资源/操作/实例的分割;“,”表示操作的分割;“*”表示任意资源/操作/实例。

通常我们只用到“资源标识符:操作”级别赖控制权限,比如“user:create”表示当前用户表示需要有“user”资源的“create”操作权限。权限标识符是支持通配符的,就像星号*,这里的星号指的是任何权限,比如“user:*”,指的就是对“user”资源的任意操作。但是,这个*在代码中控制权限应该注意:操作标识符的指的是用户需要拥有该资源的***所有***权限,而不是***任意一个***权限。

举个Srping mvc中Controller的栗子,当前user资源有view,create,update,delete操作.对于代码中的某个方法,有如下的权限控制声明:


@RequiresPermissions(value = {"user:*"} )
@RequestMapping(value="/list-user")
public void listUser(){
	//listusers
}

本来写这段代码的意思是:只要拥有user资源任意权限的用户,都能获取用户列表。但是程序运行后,会有问题:不管是有”user:create“,"user:delete"还是"user:view"的用户,调用listuser都会提示权限不足,除非用户同时拥有create,delete,view权限。对于jsp页面中,使用Shiro自带的权限控制标签,也会有相同的情况。 ###总结 在代码中使用Shiro的权限标识符时,对于操作,星号*指的是拥有资源的***所有***操作权限。而***不是***拥有资源***任意***权限。

###引用资料 开涛的Shiro教程:http://jinnianshilongnian.iteye.com/blog/2020017

转载于:https://my.oschina.net/u/1010578/blog/383739

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值