shiro授权及自定义realm授权(七)
1.授权流程
aaarticlea/png;base64,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" alt="" />
2. 三种授权方法
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
Shiro 支持三种方式的授权:
编程式:通过写if/else 授权代码块完成:
Subject subject = SecurityUtils.getSubject();
if(subject.hasRole(“admin”)) {
//有权限
} else {
//无权限
}
注解式:通过在执行的Java方法上放置相应的注解完成:
@RequiresRoles("admin")
public void hello() {
//有权限
}
JSP/GSP 标签:在JSP/GSP 页面通过相应的标签完成:
<shiro:hasRole name="admin">
<!— 有权限—>
</shiro:hasRole>
3.shiro-permission.ini
#用户
[users]
#用户zhang的密码是123,此用户具有role1和role2两个角色
zhangsan=123,role1,role2
wang=123,role2 #权限
[roles]
#角色role1对资源user拥有create、update权限
role1=user:create,user:update
#角色role2对资源user拥有create、delete权限
role2=user:create,user:delete
#角色role3对资源user拥有create权限
role3=user:create
权限标识符号规则:资源:操作:实例(中间使用半角:分隔)
user:create:01 表示对用户资源的01实例进行create操作。
user:create:表示对用户资源进行create操作,相当于user:create:*,对所有用户资源实例进行create操作。
user:*:01 表示对用户资源实例01进行所有操作。
4.程序
@Test
public void testActhorization() {
// 1.创建securityManager工厂
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro-permission.ini"); // 2.创建securityManager
SecurityManager securityManager = factory.getInstance(); // 3.将securityManager绑定到运行环境
SecurityUtils.setSecurityManager(securityManager); // 4.创建主体
Subject subject = SecurityUtils.getSubject(); // 5.创建token用于认证
UsernamePasswordToken token = new UsernamePasswordToken("zhangsan", "123"); // 6.登录(认证)
try {
subject.login(token);
} catch (AuthenticationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("认证状态:" + subject.isAuthenticated()); // 7.授权 基于角色授权 基于资源的授权 // 7.1基于角色授权
// 授权单个
boolean permitted = subject.hasRole("role1");
System.out.println("这是授权单个:" + permitted); boolean hasAllRoles = subject.hasAllRoles(Arrays.asList("role1", "role2", "role3"));
System.out.println("这是多个授权:" + hasAllRoles); // 使用check方法进行授权,如果授权不通过会抛出异常
// subject.checkRole("role13"); // 7.2 基于资源的授权
// isPermitted传入权限标识符
boolean isPermitted = subject.isPermitted("user:create:1");
System.out.println("单个权限判断" + isPermitted); boolean isPermittedAll = subject.isPermittedAll("user:create:1", "user:delete");
System.out.println("多个权限判断" + isPermittedAll); // 使用check方法进行授权,如果授权不通过会抛出异常
subject.checkPermission("items:create:1"); }
------------------------------------------------------自定义realm授权--------------------------------------------------------------------------------------------------
在原来自定义的realm中,修改doGetAuthorizationInfo方法。
package cn.qlq.realm; import java.util.ArrayList;
import java.util.List; import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection; /**
* 自定义realm。根据上面穿下来的token去数据库查信息,查到返回一个SimpleAuthenticationInfo,查不到返回null
*
* @author: qlq
* @date : 2017年7月28日下午8:45:52
*/
public class CustomRealm extends AuthorizingRealm { // 设置realm的名称
@Override
public void setName(String name) {
super.setName("customRealm");
} // 用于认证
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { // token是用户输入的
// 第一步从token中取出身份信息(token代表用户输入的传下来的信息)
String userCode = (String) token.getPrincipal(); // 第二步:根据用户输入的userCode从数据库查询
// ....从数据库查数据 // 如果查询不到返回null
// 数据库中用户账号是zhangsansan
/*
* if(!userCode.equals("zhangsansan")){// return null; }
*/ // 模拟从数据库查询到密码
String password = "111111"; // 如果查询到返回认证信息AuthenticationInfo
SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo(userCode, password,
this.getName()); return simpleAuthenticationInfo;
} // 用于授权
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { // 从 principals获取主身份信息
// 将getPrimaryPrincipal方法返回值转为真实身份类型(在上边的doGetAuthenticationInfo认证通过填充到SimpleAuthenticationInfo中身份类型),
String userCode = (String) principals.getPrimaryPrincipal(); // 根据身份信息获取权限信息
// 连接数据库...
// 模拟从数据库获取到数据
List<String> permissions = new ArrayList<String>();
permissions.add("user:create");// 用户的创建
permissions.add("items:add");// 商品添加权限
// .... // 查到权限数据,返回授权信息(要包括 上边的permissions)
SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();
// 将上边查询到授权信息填充到simpleAuthorizationInfo对象中
simpleAuthorizationInfo.addStringPermissions(permissions); return simpleAuthorizationInfo;
} }
ini文件
aaarticlea/png;base64,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" alt="" />
测试:
// 自定义realm进行资源授权测试
@Test
public void testAuthorizationCustomRealm() { // 创建SecurityManager工厂
Factory<SecurityManager> factory = new IniSecurityManagerFactory(
"classpath:shiro-realm.ini"); // 创建SecurityManager
SecurityManager securityManager = factory.getInstance(); // 将SecurityManager设置到系统运行环境,和spring后将SecurityManager配置spring容器中,一般单例管理
SecurityUtils.setSecurityManager(securityManager); // 创建subject
Subject subject = SecurityUtils.getSubject(); // 创建token令牌
UsernamePasswordToken token = new UsernamePasswordToken("zhangsan",
"111111"); // 执行认证
try {
subject.login(token);
} catch (AuthenticationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} System.out.println("认证状态:" + subject.isAuthenticated());
// 认证通过后执行授权 // 基于资源的授权,调用isPermitted方法会调用CustomRealm从数据库查询正确权限数据
// isPermitted传入权限标识符,判断user:create:1是否在CustomRealm查询到权限数据之内
boolean isPermitted = subject.isPermitted("user:create:1");
System.out.println("单个权限判断" + isPermitted); boolean isPermittedAll = subject.isPermittedAll("user:create:1",
"user:create");
System.out.println("多个权限判断" + isPermittedAll); // 使用check方法进行授权,如果授权不通过会抛出异常
subject.checkPermission("items:add:1"); }
aaarticlea/png;base64,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" alt="" />
总结授权流程:
1、对subject进行授权,调用方法isPermitted("permission串")
2、SecurityManager执行授权,通过ModularRealmAuthorizer执行授权
3、ModularRealmAuthorizer执行realm(自定义的CustomRealm)从数据库查询权限数据
调用realm的授权方法:doGetAuthorizationInfo
4、realm从数据库查询权限数据,返回ModularRealmAuthorizer
5、ModularRealmAuthorizer调用PermissionResolver进行权限串比对
6、如果比对后,isPermitted中"permission串"在realm查询到权限数据中,说明用户访问permission串有权限,否则 没有权限,抛出异常。
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
shiro授权及自定义realm授权(七)的更多相关文章
- Shiro入门 - 通过自定义Realm连数数据库进行授权
shiro-realm.ini [main] #自定义Realm myRealm=test.shiro.MyRealm #将myRealm设置到securityManager,相当于Spring中的注 ...
- Shiro第三篇【授权、自定义reaml授权】
Shiro授权 上一篇我们已经讲解了Shiro的认证相关的知识了,现在我们来弄Shiro的授权 Shiro授权的流程和认证的流程其实是差不多的: Shiro支持的授权方式 Shiro支持的授权方式有三 ...
- shiro教程2(自定义Realm)
通过shiro教程1我们发现仅仅将数据源信息定义在ini文件中与我们实际开发环境有很大不兼容,所以我们希望能够自定义Realm. 自定义Realm的实现 创建自定义Realmjava类 创建一个jav ...
- Shiro入门 - 通过自定义Realm连数数据库进行认证(md5+salt形式)
shiro-realm-md5.ini [main] #定义凭证匹配器 credentialsMatcher=org.apache.shiro.authc.credential.HashedCrede ...
- Shiro入门 - 通过自定义Realm连数数据库进行认证
添加shiro-realm.ini文件 [main] #自定义Realm myRealm=test.shiro.MyRealm #将myRealm设置到securityManager,相当于Sprin ...
- 【Shiro】Apache Shiro架构之自定义realm
[Shiro]Apache Shiro架构之身份认证(Authentication) [Shiro]Apache Shiro架构之权限认证(Authorization) [Shiro]Apache S ...
- 当shiro不进入自定义realm的权限认证方法时
需要加入下面的一个bean @Bean public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator(){ DefaultAdvisorA ...
- shiro学习笔记_0600_自定义realm实现授权
博客shiro学习笔记_0400_自定义Realm实现身份认证 介绍了认证,这里介绍授权. 1,仅仅通过配置文件来指定权限不够灵活且不方便.在实际的应用中大多数情况下都是将用户信息,角色信息,权限信息 ...
- Shiro入门学习之自定义Realm实现授权(五)
一.自定义Realm授权 前提:认证通过,查看Realm接口的继承关系结构图如下,要想通过自定义的Realm实现授权,只需继承AuthorizingRealm并重写方法即可 二.实现过程 1.新建mo ...
随机推荐
- EF 更新 删除
为了避免先查询后更新或删除的问题 可以使用如下语句 Entities db = new Entities(); Orders o = new Orders(); o.id = 6; o.name = ...
- day5 列表
列表 查 索引(下标),默认从0开始 切片 .count 查某个元素的出现次数 .index 根据内容找元素的对应索引位置 增加 .append() 追加在最后 .insert(index,'内容') ...
- Mysql 主从服务器数据同步
安装2台windows Server 服务器,分别安装Mysql,配置环境变量,完成安装确认在CMD窗口可以使用Mysql命令 在Master服务器上创建同步账号,确保Slave服务器能访问Maste ...
- LCT模板(指针版)
本来是想做THUWC2017的泰勒展开xLCT题的-- 然后觉得数组写很麻烦-- 然后就决定挑战指针版-- 然后写得全是BUG-- 与BUG鏖战三千年后,有了这个指针版LCT板子! #include ...
- 一种BCD码转换的算法
#include "stdio.h" typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef ...
- 洛谷 P1582 倒水 解题报告
P1582 倒水 题目描述 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选择两个当前含水量相同的瓶子,把 ...
- bzoj1001/luogu4001 狼抓兔子 (最小割/平面图最小割转对偶图最短路)
平面图转对偶图:先在原图中加一个s->t的边,然后对每个面建一个点,对每条分隔两个面的边加一条连接这两个面对应点的边,边权等于原边权. 然后从刚才加的s->t分割出来的两面对应的两个点跑最 ...
- Windows下查看游戏服务器的IP地址
在任务管理器中查看进程的PID 在cmd中使用netstat -aon,找到PID对应的IP地址
- 51nod1238 最小公倍数之和 V3
又被这神仙题给坑爆了. 神仙题解. 一开始我把lcm变成ij/gcd然后按照常规套路去推,推到最后发现不是miu * Id而是miu · Id......这还搞鬼啊. 正解居然跟这个差不多,先转成求其 ...
- 《CSS揭秘》笔记(一)
前言 我们在现代 CSS 中所面临的挑战已经不在于如何绕过这些转瞬即逝的浏览器 bug.如今的挑战是,在保证 DRY ① .可维护.灵活性.轻量级并且尽可能符合标准的前提下,把我们手中的这些CSS特性 ...