Shiro授权

说明:Shiro授权过程 和 认证过程很相似,最要在模拟用户时为用户添加角色(roles)即可

授权过程:

  • 创建 SecurityManager -> 主题授权 -> SecurityManager授权 -> Authorizer授权 -> Realm获取权限角色数据

一. 创建测试类

package com.example.controller;

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;

public class TestController {
    SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();

    @Before
    public void addUser() {
        // 模拟账户信息
        simpleAccountRealm.addAccount("mark", "1234","admin","user");
    }

    @Test
    public void test() {
        // 1. 构建SecurityManage环境
        DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
        defaultSecurityManager.setRealm(simpleAccountRealm);

        // 2. 提交主题认证请求
        SecurityUtils.setSecurityManager(defaultSecurityManager);
        Subject subject = SecurityUtils.getSubject();

        UsernamePasswordToken token = new UsernamePasswordToken("mark","1234");
        // 3. 登录认证
        subject.login(token);

        System.out.println(subject.isAuthenticated());
        // 4. 检查角色:该方法检查输入的所有角色,如果其中一个为fales,则返回fales
        subject.checkRoles("admin","user");

    }
}