3、Shiro授权
2024-09-01 10:05:09
Shiro授权过程和认证过程相似:
项目结构:
package com.shiro.shiroframe; 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.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; public class ShiroAuthorizerTest {
//realm,暂时用来存储我们假造的用户信息
SimpleAccountRealm simpleAccountRealm=new SimpleAccountRealm();
@BeforeEach
public void setUserMsg(){
//添加一个用户信息并设置角色为admin
simpleAccountRealm.addAccount("houru","miyue","admin","user");//设置该用户既是管理员又是普通用户
}
@Test
public void ShiroAuthorizerTest() {
//构建SecurityManager环境
DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
//SecurityManager环境下设置realm
defaultSecurityManager.setRealm(simpleAccountRealm);
//SecurityUtils先获取SecurityManager环境
SecurityUtils.setSecurityManager(defaultSecurityManager);
//获取subject
Subject subject= SecurityUtils.getSubject();
//通过UsernamePasswordToken组织提交认证所要传递的参数
UsernamePasswordToken usernamePasswordToken=new UsernamePasswordToken("houru","miyue");
//登录认证
subject.login(usernamePasswordToken);
//打印是否认证通过:subject.isAuthenticated()
System.err.println(subject.isAuthenticated());
//权限认证
//检查当前用户是否具有admin角色权限
subject.checkRole("admin");
//检查当前用户是否具有admin,user等角色权限
subject.checkRoles("admin","user");
}
}
最新文章
- 【CSS进阶】伪元素的妙用--单标签之美
- MyBatis Like查询处理%_符号
- asp.net mvc 中 一种简单的 URL 重写
- CSS position relative absolute fixed
- javascript - 浏览器对象
- 每日一“酷”之Cookie
- MFC中全局变量的定义及使用
- ubuntu 配置ftp服务器 vsftpd
- 六、BeautifulSoup4------自动登录网站(手动版)
- 【C++笔记】explicit 指定符
- hdu3652 数位dp记忆化搜索
- docker swarm:Error response from daemon: rpc error: code = Unavailable desc = grpc: the connection is unavailable
- BZOJ1787 [Ahoi2008]Meet 紧急集合 LCA
- python list seq
- 在SQL Server中创建用户角色及授权
- 抽象语法符号ASN.1(Abstract Syntax Notation One)
- 20145225唐振远《网络对抗》Exp4 恶意代码分析
- iOS开发学习-nonatomic和atomic的区别
- 数据融合(data fusion)原理与方法
- java反射之ClassLoader
热门文章
- kibana报[FORBIDDEN/12/index read-only / allow delete (api)]错误
- MySQL查询最近一周(最近7天)数据
- ThinkPHP验证器验证规则编码要点
- 利用ab压力工具对服务器进行压力测试
- Librepilot-创建UAVObject及编译到飞机端和地面站端的步骤
- CNN实战篇-手把手教你利用开源数据进行图像识别(基于keras搭建)
- dedecms织梦无法保存栏目内容的解决方法
- [易学易懂系列|rustlang语言|零基础|快速入门|(4)|借用Borrowing]
- 【NOIP2012模拟10.31】掷骰子
- JavaScript求取水仙花数