Shiro的认证流程大体可以参考下面这幅图:

但是没有接触过shiro的同学看到上面的图片也不明白,下面我们来在代码中尝试体验Shiro的认证过程:

1.新建一个SpringBoot项目项目结构如下:

ShiroframeApplicationTests代码:

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 ShiroframeApplicationTests {//realm,暂时用来存储我们假造的用户信息SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();@BeforeEach//@BeforeEach注解的作用就是使她下面的方法在其他方法运行之前执行public void addUser(){//设置假造的用户信息,在Realm里面添加一个用户simpleAccountRealm.addAccount("qqq", "aaa");}@Testpublic void authenticator() {//1.构建SecurityManager环境DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();//设置SecurityManager环境下的Realm
        defaultSecurityManager.setRealm(simpleAccountRealm);//SecurityUtils先获取SecurityManager环境
        SecurityUtils.setSecurityManager(defaultSecurityManager);//通过SecurityUtils获取Subject主体Subject subject = SecurityUtils.getSubject();//通过UsernamePasswordToken组织提交认证所要传递的参数UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("qqq", "aaa");//提交登录认证
        subject.login(usernamePasswordToken);//打印是否认证通过:subject.isAuthenticated()System.err.println("isAuthenticated:" + subject.isAuthenticated());//账号密码匹配的情况下打印结果:isAuthenticated:true;否则控制台报错:org.apache.shiro.authc.UnknownAccountException: Realm [org.apache.shiro.realm.SimpleAccountRealm@2cbb3d47] was unable to find account data for the submitted AuthenticationToken [org.apache.shiro.authc.UsernamePasswordToken - qq, rememberMe=false].//登出
        subject.logout();//登出之后认证返回falseSystem.err.println("isAuthenticated:" + subject.isAuthenticated());//isAuthenticated:false
    }}

转载于:https://www.cnblogs.com/luzhanshi/p/11023771.html

2、Shiro的认证相关推荐

  1. Shiro实现认证_ini

     1,基本概念 1,身份验证 即在应用中谁能证明他就是他本人.一般提供如他们的身份ID 一些标识信息来表明他就是他本人, 如提供身份证,用户名/密码来证明. 在 shiro 中,用户需要提供princ ...

  2. authc过滤器 shiro_使用Shiro实现认证和授权(基于SpringBoot)

    Apache Shiro是一个功能强大且易于使用的Java安全框架,它为开发人员提供了一种直观,全面的身份验证,授权,加密和会话管理解决方案.下面是在SpringBoot中使用Shiro进行认证和授权 ...

  3. springboot+mybatis整合shiro——登录认证和权限控制

    引依赖 shiro-all包含shiro所有的包.shiro-core是核心包.shiro-web是与web整合.shiro-spring是与spring整合.shiro-ehcache是与EHCac ...

  4. Shiro身份认证---转

    目录 1. Shro的概念 2. Shiro的简单身份认证实现 3. Shiro与spring对身份认证的实现 前言: Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境 ...

  5. 学习Spring Boot:(十三)配置 Shiro 权限认证

    经过前面学习 Apache Shiro ,现在结合 Spring Boot 使用在项目里,进行相关配置. 正文 添加依赖 在 pom.xml 文件中添加 shiro-spring 的依赖: <d ...

  6. Shiro学习笔记_02:shiro的认证+shiro的授权

    Shiro 学习笔记 本文基于B站UP主[编程不良人]视频教程[2020最新版Shiro教程,整合SpringBoot项目实战教程]进行整理记录,仅用于个人学习交流使用. 视频链接:https://w ...

  7. SpringBoot + MyBatis-Plus + Shiro授权认证

    一.引入依赖 <!-- Spring Boot SpringMVC 框架 --> <dependency><groupId>org.springframework. ...

  8. shiro的 认证 与 授权

    1,什么是shiro Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架. shiro将 ...

  9. 一文读懂 Shiro 登录认证全流程

    一文读懂 Shiro 登录认证全流程 登录入口 执行登录 UserRealm Apache Shiro 是 Java 的一个安全框架.Shiro 可以帮助我们完成:认证.授权.加密.会话管理.与 We ...

最新文章

  1. MySQL 批量插入:如何不插入重复数据?
  2. 模板or定制网站如何选?
  3. 百度关闭新闻源背后的13个趋势风口
  4. 哪些贷款是正规的?哪些贷款千万别碰?
  5. 按钮传值给ajax,用jquery和ajax实现分页时,按钮怎么给jquery传值?
  6. Linux之find学习--详解
  7. 旧的非flash版Metalink的入口
  8. NDK开发简单demo
  9. R语言:关于我国各地区消费水平的聚类分析
  10. win8 机器硬盘异响
  11. 电脑开机界面如何设置个性签名?
  12. 看完这个故事终于知道区块链是什么了
  13. 雨后小故事动态邪恶_当您遇到“邪恶”的问题时,使故事变小
  14. 最伟大IT人物10强出炉 乔布斯第一盖茨第三
  15. 台式机通过笔记本上网的方法
  16. 怎么把在线网站保存的flv格式转换成mp4
  17. 开发框架-.Net:Learun(力软敏捷开发)
  18. Banana Pi BPI-R3 评测:详细信息、功能
  19. 关于DSP28335的CAN模块与上位机(PC)通信调试心得(1)
  20. 【DB笔试面试702】在Oracle中,如何定时清理INACTIVE状态的会话?

热门文章

  1. alert 返回页面 刷新_页面生命周期:DOMContentLoaded,load,beforeunload,unload
  2. append替换代码后jquery不起作用_jQuery部分笔记
  3. CentOS7如何关闭防火墙
  4. 数据库数据类型和占用字节数对比
  5. linux unzip到指定目录
  6. 红帽安装Oracle步骤
  7. Android开发笔记(一百零七)统计分析SDK
  8. swoole 异步client redis TP5 微信模板消息 demo版本比较杂 代码注释啥的都没删除 但是可以用作为参考
  9. 判断给定数组是否包含132模式 132 Pattern
  10. Android 类库