Shiro-菜鸟初试篇

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);
    }
}

看一下项目整体结构
Shiro-菜鸟初试篇_第1张图片下文链接:https://blog.csdn.net/qq_43518645/article/details/103612243
Shiro系列专题链接:https://blog.csdn.net/qq_43518645/category_9604248.html

2019/12/18学习记录。

你可能感兴趣的:(Shiro)