【shiro学习笔记(3)】shiro中的授权

shiro学习笔记


【shiro学习笔记(1)】shiro入门 shiro的第一个程序shiro Maven案例
【shiro学习笔记(2)】在shiro中自定义登录策略使用MD5加密算法


shiro的授权


1.授权的概念
授权是指对用户进行访问控制,即用户是否有权限访问某个资源。
例如:用户登录后,只有具有“管理员”角色的用户才能访问“后台管理”模块。
2.授权的实现方式
基于角色的访问控制
通过角色来控制用户的访问权限,即用户是否有权限访问某个资源。
例如:用户登录后,只有具有“管理员”角色的用户才能访问“后台管理”模块。
基于资源的访问控制
通过资源来控制用户的访问权限,即用户是否有权限访问某个资源。
例如:用户登录后,只有具有“/admin/**”资源的用户才能访问“后台管理”模块。
3.权限字符串:
权限字符串的规则是:资源标识符:操作:对象实例ID,可以使用*通配符
例:
用户角色具有创建用户的权限:user:create或者user:create: 星号
用户角色具有修改对象实例ID为1的用户的权限:user:update:1
4.shiro授权的实现
(1).在shiro的配置文件中配置授权的过滤器
例如:配置/admin/**资源需要“admin”角色才能访问

<property name="filterChainDefinitions">
	<value>
		/admin/** = roles[admin]
	</value>
</property>

(2).在realm中实现授权的方法
例如:realm中实现doGetAuthorizationInfo方法

protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
	//获取当前登录的用户名
	String currentUsername = (String)super.getAvailablePrincipal(principals);
	//从数据库中获取当前登录用户的详细信息
	User user = userService.getByUsername(currentUsername);
	//为当前用户设置角色和权限
	SimpleAuthorizationInfo simpleAuthorInfo = new SimpleAuthorizationInfo();
	simpleAuthorInfo.addRole(user.getRole());
	simpleAuthorInfo.addStringPermission(user.getPermission());
	return simpleAuthorInfo;
}

(3).在controller中使用shiro的注解
例如:在controller中使用shiro的注解

@RequiresRoles("admin")
@RequestMapping("/admin")
public String admin() {
	return "admin";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值