Apache Shiro权限认证(Authorization)
2017-03-06 11:15
423 查看
本文主要来总结一下Shiro中的权限认证(Authorization)功能,即授权。如下:
本文参考自Apache Shiro的官方文档:http://shiro.apache.org/authorization.html
本文遵循以下流程:先介绍Shiro中的权限认证,再通过一个简单的实例来具体说明一下API的使用(基于maven)。
-------------------------------------------------------------------------------------------------------------------------
1.权限认证的核心要素
权限认证:就是访问控制,即在应用中控制谁能访问哪些资源。在权限认证中,最核心的三个要素是:权限,角色和用户:
一个用户可以有多个角色,而不同的角色可以有不同的权限,也可由有相同的权限。比如说现在有三个角色,1是普通角色,2是普通角色,3是管理员,
角色1只能查看信息,角色2只能添加信息,管理员都可以,而且还可以删除信息。
-------------------------------------------------------------------------------------------------------------------------------
1.1基于角色的访问控制
授权过程是通过判断角色来完成的,哪个角色可以做哪些事情等,它有如下API:
对这三个API,做一下简单的说明,第一个很简单,传入一个role即可,判断是否拥有该角色访问权,第二个方法是传入一个role的集合,然后Shiro会根据集合中的每一个role做一下判断,并且将每次的判断结果放到boolean[]数组中,顺序与集合中role的顺序一致;第三个方法也是传入一个role的集合,不同的是,返回boolean类型,必须集合中全部role都有才为true,否则为false。
针对第一个用法:
除了这几个API,shiro还提供了check的API,与此不同的是,has-xxx会返回boolean类型的数据,用来判断,而check-xxx不会返回任何东西,如果验证成功就继续处理下面的代码,否则会抛出一个异常,可以通过捕获异常来处理,API如下:
使用方法如下:
基于权限的访问控制和基于角色的访问控制在原理上是一模一样的,只不过API不同而已,API如下:
具体案例请见:http://blog.csdn.net/eson_15/article/details/51774007
本文参考自Apache Shiro的官方文档:http://shiro.apache.org/authorization.html
本文遵循以下流程:先介绍Shiro中的权限认证,再通过一个简单的实例来具体说明一下API的使用(基于maven)。
-------------------------------------------------------------------------------------------------------------------------
1.权限认证的核心要素
权限认证:就是访问控制,即在应用中控制谁能访问哪些资源。在权限认证中,最核心的三个要素是:权限,角色和用户:
权限(permission):即操作资源的权利,比如访问某个页面,以及对某个模块的数据的添加,修改,删除,查看的权利; 角色(role):指的是用户担任的的角色,一个角色可以有多个权限; 用户(user):在Shiro 中,代表访问系统的用户,即上一篇博文提到的Subject认证主体;它们之间的关系如下图:
一个用户可以有多个角色,而不同的角色可以有不同的权限,也可由有相同的权限。比如说现在有三个角色,1是普通角色,2是普通角色,3是管理员,
角色1只能查看信息,角色2只能添加信息,管理员都可以,而且还可以删除信息。
-------------------------------------------------------------------------------------------------------------------------------
1.1基于角色的访问控制
授权过程是通过判断角色来完成的,哪个角色可以做哪些事情等,它有如下API:
对这三个API,做一下简单的说明,第一个很简单,传入一个role即可,判断是否拥有该角色访问权,第二个方法是传入一个role的集合,然后Shiro会根据集合中的每一个role做一下判断,并且将每次的判断结果放到boolean[]数组中,顺序与集合中role的顺序一致;第三个方法也是传入一个role的集合,不同的是,返回boolean类型,必须集合中全部role都有才为true,否则为false。
针对第一个用法:
Subject currentUser = SecurityUtils.getSubject(); if (currentUser.hasRole("administrator")) { //show the admin button or do administrator's things } else { //don't show the button? Grey it out? or others... }
除了这几个API,shiro还提供了check的API,与此不同的是,has-xxx会返回boolean类型的数据,用来判断,而check-xxx不会返回任何东西,如果验证成功就继续处理下面的代码,否则会抛出一个异常,可以通过捕获异常来处理,API如下:
使用方法如下:
Subject currentUser = SecurityUtils.getSubject(); //guarantee that the current user is a bank teller and //therefore allowed to open the account: currentUser.checkRole("bankTeller"); openBankAccount();1.2基于权限的访问控制
基于权限的访问控制和基于角色的访问控制在原理上是一模一样的,只不过API不同而已,API如下:
具体案例请见:http://blog.csdn.net/eson_15/article/details/51774007
相关文章推荐
- 【Shiro】Apache Shiro架构之权限认证(Authorization)
- 【Shiro】Apache Shiro架构之权限认证(Authorization)
- 【Shiro】Apache Shiro架构之权限认证(Authorization)
- Shiro02--Apache Shiro架构之权限认证(Authorization)
- 【Shiro】Apache Shiro架构之权限认证(Authorization)
- 【Shiro】Apache Shiro架构之权限认证(Authorization)
- 【Shiro】Apache Shiro架构之权限认证(Authorization)
- Apache Shiro 权限认证(1)
- Apache Shiro进行权限认证
- 采用ApacheShiro来实现应用的权限认证
- SpringBoot+shiro整合学习之登录认证和权限控制
- springboot(十四):springboot整合shiro-登录认证和权限管理
- springboot(十四):springboot整合shiro-登录认证和权限管理
- apache shiro与spring整合、动态filterChainDefinitions、以及认证、授权
- apache shiro与spring整合、动态filterChainDefinitions、以及认证、授权
- 使用Shiro做权限认证(1)
- apache shiro与spring整合、动态filterChainDefinitions、以及认证、授权
- springboot(十四):springboot整合shiro-登录认证和权限管理
- Apache Shiro 权限控制(2)
- shiro实现APP保持登录状态,以及web统一登录认证和权限管理,会话保持在web和APP之间。