0
点赞
收藏
分享

微信扫一扫

SpringBoot整合Shiro(一)Shiro认证

西特张 2021-09-28 阅读 112

1. Shiro简介

· Shiro是一个强大且易用的Java安全框架。
· 可以帮助我们完成认证、授权、加密、会话管理、与 Web 集成、缓存等。
· 与Spring Security 相比,在于 Shiro 使用了比较简单易懂易于使用的授权方式。shiro属于轻量级框架,相对于security简单的多,也没有security那么复杂。

2. Shiro的整体架构

架构名称 描述
Subject 当前操作用户
Authenticator 认证(登录、登出等)
Authorizer 授权
Session Manager 会话管理器
Session DAO session的操作,例如增删改查
Cache Manager 缓存管理器
Cryptography 加密

shiro三大核心组件

组建名称 作用
Subject 代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。
SecurityManager 它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
Realm Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。

3.Shiro认证

Shiro认证的步骤如下:



Shiro认证小例子:
第一步. 创建SpringBoot项目
第二步. 在pom.xml添加Shiro与Spring整合的依赖



第三步. 编写一个简单的测试类,项目目类结构如下:

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 AuthenticationTest {
    // 用来存储用户信息
    SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();

    @Before
    public void addUser(){
        //  添加用户
        simpleAccountRealm.addAccount("olivia","123456");
    }

    @Test
    public void testAuthentication(){
        //  创建SecurityManager
        DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
        // 设置SecurityManager环境下的Realm
        defaultSecurityManager.setRealm(simpleAccountRealm );

        //  主体提交认证请求
        SecurityUtils.setSecurityManager(defaultSecurityManager);

        //  得到Subject及创建用户名/密码身份验证Token(即用户身份/凭证)
        Subject subject = SecurityUtils.getSubject();
        // 通过UsernamePasswordToken组织提交认证所要传递的参数
        UsernamePasswordToken token = new UsernamePasswordToken("olivia","123456");
        // 提交登录认证
        subject.login(token);
        // 打印是否认证通过:subject.isAuthenticated()
        System.out.println("认证:" + subject.isAuthenticated());
    }
}

第四步. 运行



举报

相关推荐

0 条评论