文章目录

  • shiro介绍
  • 使用shiro完成基本的登录

shiro介绍

Apache Shiro 是 Java 的一个安全框架。目前,使用 Apache Shiro 的人越来越多,因为它相当简单,对比 Spring Security,可能没有 Spring Security 做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的 Shiro 就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。

使用shiro完成基本的登录

  1. 首先需要创建一个shiro配置文件(shiro.ini)

    请填写以下内容

    [users]
    zs=123
    ls=123456
    ww=123456789
    

    这里先使用稍后说明具体作用

  2. 创建一个测试类

    导入Junit和shiro依赖

    <dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-core</artifactId><version>1.5.3</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/junit/junit -->
    <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>
    </dependency>
    
  3. shiro使用基本步骤

    //1.创建安全管理器对象
    DefaultSecurityManager securityManager = new DefaultSecurityManager();
    //2.设置给安全管理器设置realm
    securityManager.setRealm(new IniRealm()());
    //3.SecurityUtils 全局安全工具类
    SecurityUtils.setSecurityManager(securityManager);
    //4.关键对象,subject
    Subject subject = SecurityUtils.getSubject();
    //5.创建令牌
    UsernamePasswordToken token = new UsernamePasswordToken("zs", "123");
    try {System.out.println("认证状态:" + subject.isAuthenticated());subject.login(token);System.out.println("认证状态:" + subject.isAuthenticated());
    } catch (UnknownAccountException e) {e.printStackTrace();System.out.println("认证失败,用户名不存在");
    } catch (IncorrectCredentialsException e) {e.printStackTrace();System.out.println("认证失败,密码错误");
    }
    
    • securityManager

      相当于 SpringMVC 中的 DispatcherServlet 或者 Struts2 中的 FilterDispatcher;是 Shiro 的心脏;所有具体的交互都通过 SecurityManager 进行控制;它管理着所有 Subject、且负责进行认证和授权、及会话、缓存的管理

    • subject

      主体,可以看到主体可以是任何可以与应用交互的 “用户”

    • realm

      可以有 1 个或多个 Realm,可以认为是安全实体数据源,即用于获取安全实体的;可以是 JDBC 实现,也可以是 LDAP 实现,或者内存实现等等;由用户提供;注意:Shiro 不知道你的用户 / 权限存储在哪及以何种格式存储;所以我们一般在应用中都需要实现自己的Realm

  4. 登录异常分析

    • 用户名在配置文件中不存在时

      • 抛出UnknownAccountException
    • 用户名存在但密码错误时
      • IncorrectCredentialsException
    • 用户名和密码都正确
      • subject.isAuthenticated()则会返回true
  5. 配置文件分析

    • shiro的配置文件其实是方便使用者测试或入门使用
    • [users]下代表着所有的用户
    • 用户名=密码的键值对存储形式

shiro基本使用和完成登录相关推荐

  1. shiro解决一个账号异地登录的问题

    shiro解决一个账号异地登录的问题 参考文章: (1)shiro解决一个账号异地登录的问题 (2)https://www.cnblogs.com/zeussbook/p/10882426.html ...

  2. 超详细!附源码!SpringBoot+shiro+mybatis+Thymeleaf实现权限登录系统

    最近在做一个期末作品,就是使用ssm+thymeleaf+vue+shiro完成一个具有权限登录,且能实现用户信息增删查改的这么一个项目,下面仅仅是实现权限认证和登录.为什么我选shiro,而不选sp ...

  3. spring + shiro + cas 实现sso单点登录

    sso-shiro-cas spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次,项目源码 系统模块说明 cas: 单点登录模块,这里直接拿的是cas的项目改了点样 ...

  4. springboot+shiro+jwt实现token认证登录

    准备: springboot 2.5.5 jdk 1.8 没有操作刷新token功能,也没有放redis做缓存 1.先贴代码 2.后讲一下验证逻辑 1.导入依赖 <!--shiro-->& ...

  5. Shiro框架中实现CA登录及免密功能

    准备工作 安装CA证书,这个一般在网站首页就会提供下载链接. 插入USBKey,一个类似U盘的东西,需要自主申请办理. 将USBKey绑定到对应网站的账号上. 登录流程概要 主要代码 jsp < ...

  6. 【Shiro】7、Shiro实现控制用户并发登录并踢人下线

    在传统的项目中,同一账户是允许多人同时登录在线的,有的使用场景恰恰是不允许多人同时在线的,那么我们可以通过 Shiro 来控制并发登录,并实现后登录的用户,挤掉前面登录的用户 1.并发登录过滤器 pa ...

  7. shiro处理ajax请求未登录,shiro处理ajax请求session失效跳转

    最近在学习shiro时遇到一个问题,在ajax请求时,若是session失效时,没法正确的跳转登陆页面.在以前的项目中处理的方法是经过自定义一个过滤器来处理,session失效时返回错误码来处理.但由 ...

  8. 4、Shiro之IniRealm以及用户登录认证,角色认证,权限认证

    1.我们在项目test文件夹下面新建resourse文件夹并将她设置为资源文件夹: 2.在resourse文件夹下面新建user.ini文件 user.ini文件里面声明一个用户: 先写一个用户标签[ ...

  9. 菜鸟学习shiro之入门的简单登录认证和身份认证1

    最近学习了四郎,学的是天南海北,一头雾水,概念懂了,实践呐,就很是缺乏,于是跟着慕课网的视频教程敲敲代码 果然加深了理解,话不多说,直接看代码 Maven的依赖: <dependencies&g ...

最新文章

  1. OSChina 周三乱弹 —— 孤独到都和病毒发生了感情了
  2. linux下安装mysql5.7.25详细教程
  3. 1分钟破解3dState '学习版'得一些版权信息。
  4. ES6-14 Unicode表示法、字符串方法、模板字符串
  5. .NET Core 3.0 新 JSON API - Utf8JsonWriter
  6. 最新xampp下安装mod_security,mod_evasive,mod-cband笔记
  7. Vue项目 开启gzip
  8. python之tkinter使用-消息弹框
  9. MySQL配置文件my.cnf参数优化和中文详解
  10. (黑苹果efi文件)B550-I Ryzen 9 5950X RX 5700 XT 黑苹果efi引导文件
  11. 统计学习之第二天(可汗学院公开课:统计学)
  12. BeagleBone Black 从零到一 (2 MLO、U-Boot)
  13. 如何安装最新版本的office(preview预览版)、更新
  14. C#操作MicroSoft Word的代码
  15. taobao.itemprops.get( 获取标准商品类目属性 )
  16. 账号批量注册软件开发启示录
  17. mac 升级php 到7,macOS High Sierra 10.13升级PHP到7.3并创建Laravel 7项目
  18. 定积分在几何学上的应用
  19. tif文件转为shp文件_从Tif文件转为shp文件(ArcMap,代码)、gdal打包问题
  20. 计算机类一级学术刊物、核心刊物列表及简介

热门文章

  1. vcu整车simulink模型
  2. Sketch for UX Design Sketch UX设计教程 Lynda课程中文字幕
  3. java形参和实参的三种传递方式(值传递,地址传递,引用传递)
  4. 基于Spark框架的大型分布式矩阵求逆运算实现(二)——大型下三角矩阵求逆运算
  5. 分布式架构优缺点以及设计
  6. 教你一招:使用最快速的方式激活windows10专业版
  7. 组件封装--button组件
  8. delphi透明panel组件或者制作方法
  9. 我的时间都去哪里了?
  10. 红外线测温仪方案开发