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] 异常

posted @ 2019-06-18 21:34  奋斗的小宋  阅读(10)  评论(0)    收藏  举报