权限项目总结(四) shiro 授权
来源:互联网 发布:淘宝网管理团队 编辑:程序博客网 时间:2024/06/01 19:10
概述
Authorization(授权):不难理解,授权就是用来控制当前访问用户在访问系统资源权限。
这个词也做证书的解释,从证书这个角度来讲,判断是否拥有对资源访问的权限时,当前用户需要提供证书。
授权的核心
用户—角色—权限,以角色为中心,一般情况将权限分配给某个角色,然后给用户分配某个权限或是一组权限。
基本的流程
当前用户调用isPermitted方法,携带着当前用户访问资源的路径,一般是字符串或者是集合。
调用自定义的Realm类的重写方法 doGetAuthorizationInfo(PrincipalCollection principals) 这里将获取当前用户的权限数据。可以是.ini 文件,也可以是从数据库中查询。
调用 AuthorizingRealm 类的 getAuthorizationInfo(PrincipalCollection principals) 方法得到角色的权限,内部最后通过 isPermitted(PrincipalCollection principals, String permission) 遍历验证。
看看最后验证权限的方法,也没有想象中那么复杂。
public boolean isPermitted(PrincipalCollection principals, String permission) {assertRealmsConfigured();for (Realm realm : getRealms()) {if (!(realm instanceof Authorizer)) continue;if (((Authorizer) realm).isPermitted(principals, permission)) {return true;}}return false;}
Shiro三种方式实现授权
1:编写代码——在Java 代码中用像if 和else 块的结构执行授权检查。
@RequestMapping(params = "myjsp") public String home() { Subject currentUser = SecurityUtils.getSubject(); if(currentUser.isPermitted("user.do?myjsp")){ return "my"; }else{ return "error/noperms"; } }
2:JDK 的注解——你可以添加授权注解给你的 Java 方法。
@RequiresAuthentication要求当前用户已经认证通过,才能执行该方法
@RequiresGuest session中没有权限
@RequiresPermissions 要求当前用户认证后拥有多个权限
@RequiresRoles(“administrator”) 要求用户拥有(“administrator”)权限
@RequiresUser 要求subject为存在于当前系统中的用户
3:JSP/GSP 标签库——你可以控制基于角色和权限的JSP 或者GSP 页面输出。
<shiro:authenticated> <a>已通过认证的用户才能</a> </shiro:authenticated>
- 权限项目总结(四) shiro 授权
- 权限项目总结(二)shiro 基础
- 权限项目总结(三) shiro 认证
- (三)shiro权限认证(授权)
- (四)shiro注解授权和jsp标签授权
- Apache Shiro 基于权限授权
- shiro权限框架详解05-shiro授权
- 【Shiro权限管理】14.Shiro授权
- 一头扎进Shiro-权限认证(授权)
- Shiro在web的授权检测(权限角色验证)
- spring boot(四)shiro权限集成
- Apache shiro集群实现 (四)shiro授权(Authentication)--访问控制
- Apache shiro集群实现 (四)shiro授权(Authentication)--访问控制
- Apache shiro集群实现 (四)shiro授权(Authentication)--访问控制
- shiro实现基于角色的权限授权
- 基于shiro的权限管理-002授权
- java安全框架-Shiro学习笔记(四)-注解式授权+Jsp标签授权
- 【Shiro】Shiro从小白到大神(三)-权限认证(授权)
- Mongodb在Linux下的安装和启动和配置
- iOS时间前后获取
- Spring 解决编码问题-CharacterEncodingFilter
- 忽略时间,以'帧'为概念的重力系统(通过updatePosition来更新位置代替MoveTo)
- UML之用例图
- 权限项目总结(四) shiro 授权
- HTML5 video 跨浏览器兼容的方法
- TaskTriggerType 根据事件类型来确定节点
- spring 的 AOP详解
- 生成表记录的SQL语句
- 测试博文测试博文测试博文
- 2015腾讯微博登陆解密基于httpclient抓包模拟登陆
- hadoop2.5.2HA高可靠性集群搭建(zookeeper3.4.6+hbase0.98.11)
- 测试博文测试博文测试博文