Shiro之简单授权篇
本篇博客带大家学习Shiro实现简单授权
Shiro授权过程

1.创建Security Manager对象去构建Security Manager的环境。(用于提供安全服务)
2.主体提交授权请求给Security Manager,Security Manager去通过Authorizer(授权器)来从Realms中获取角色权限数据,然后用Realms从数据库中获取角色权限数据。
创建securityManager对象 -> 主体授权 -> securityManager授权 -> authorizer授权 -> Realm 获取角色权限数据
Shiro实现授权
在上一篇Shiro认证博客所写的项目上进行
测试类代码
package com.imooc.test;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.SimpleAccountRealm;
import org.apache.shiro.subject.Subject;
import org.junit.Before;
import org.junit.Test;
/**
*
* @author 宋政宏
* @date: 2019-06-18 20:36
*/
public class AuthenticationTest {
SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();
@Before
public void addUser(){
simpleAccountRealm.addAccount("Mark","123456","admin","user");
}
@Test
public void testAuthentication(){
//1.构建SecurityManager环境
DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
defaultSecurityManager.setRealm(simpleAccountRealm);
//2.主体提交认证请求
SecurityUtils.setSecurityManager(defaultSecurityManager);
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken("Mark","123456");
subject.login(token);
System.out.println("isAuthenticated:"+ subject.isAuthenticated());
//用户是否具备这些角色
subject.checkRoles("admin","user");
}
}
详细过程如下:
1.首先在测试类中给用户赋予了一个管理员的角色。
@Before
public void addUser(){
simpleAccountRealm.addAccount("Mark","123456","admin");
}

检查用户是否具备admin角色
//用户是否具备admin角色
subject.checkRole("admin");

运行
没有问题
2.多个角色 例如:管理员和普通用户
@Before
public void addUser(){
simpleAccountRealm.addAccount("Mark","123456","admin","user");
}

//用户是否具备这些角色
subject.checkRoles("admin","user");

运行

输入错误角色 如图:

报org.apache.shiro.authz.UnauthorizedException: Subject does not have role [user1] 异常

浙公网安备 33010602011771号