Shiro 框架介绍
Subject(主体)
shiro中是一个接口,接口中定义了很多认证授权相关的方法
通过安全管理器进行认证和授权。
SecuritManager(安全管理器)
它是shiro的核心
负责对所有的subject进行安全管理。
通过SecuritManager可以完成subject的认证、授权等操作。
SecurityManager通过Authenticator进行认证,通过Autuhrizer进行授权,通过SessionManager进行会话管理。
SecuritManager是一个接口,继承了Authenticator、Authorizer、SessionManager这三个接口。
Authenticator(认证器)
对主体进行认证
Autuhrizer(授权器)
用户通过认证器认证通过,在访问功能时通过授权器判断用户是否有此功能的操作权限。
Realm
SecuritManager进行安全认证需要通过Realm获取用户权限数据
Realm也是一个接口,有多种实现:
1、将用户的权限信息写到配置文件
2、将用户的权限信息存储到数据库
Realm
从配置文件或者数据库等读取用户的权限信息
SessionManager(会话管理器)
shiro框架定义了一套会话管理,它不依赖web容器的session
所以shiro可以使用在非web应用上,也可以将分布式应用的会话集中在一点管理
此特性可使它实现单点登录。
SessionDAO(会话dao)
是对session会话操作的一套接口,比如要将会话信息存储到redis数据库
CacheManager(缓存管理器)
将用户权限数据存储在缓存,这样可以提高性能
Cryptography(密码管理器)
shiro提供了一套加密/解密的组件,方便开发。比如提供常用的散列、加/解密等功能
开发环境搭建
创建Manven工程,导入坐标
<dependencies>
<!--导入坐标-->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.3.2</version>
</dependency>
<!--单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--日志 log4j2-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.12.1</version>
</dependency>
<!--用与log4j2和slf4j保持桥接-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.12.1</version>
<scope>test</scope>
</dependency>
</dependencies>
创建配置文件
shiro.ini
[users]
zhangsan=123456,admin
lisi=654321,public
[roles]
admin=product:view,product:create,product:update,product:delete
public=product:view
配置文件 shiro.ini Realm
[users] 主体 认证
zhangsan=123456,admin 用户名=密码,用户所属的角色 其中角色可以有多个,用逗号分割
lisi=654321,superadmin
[roles] 角色 授权
角色对资源,一个角色可以有多个资源
读取配置文件加载框架
public class ShiroTest {
@Test
public void test(){
//1.初始化shiro的安全管理器
DefaultSecurityManager securityManager=new DefaultSecurityManager();
//2.设置用户的权限信息到安全管理器
Realm realm=new IniRealm("classpath:shiro.ini");
securityManager.setRealm(realm);
//3.使用SecurityUtils将securityManager设置到运行环境中
SecurityUtils.setSecurityManager(securityManager);
}
}
看一下项目整体结构下文链接:https://blog.csdn.net/qq_43518645/article/details/103612243
Shiro系列专题链接:https://blog.csdn.net/qq_43518645/category_9604248.html
2019/12/18学习记录。
来源:CSDN
作者:爱猫狗的小郝
链接:https://blog.csdn.net/qq_43518645/article/details/103604934