shiro基本使用和完成登录
文章目录
- shiro介绍
- 使用shiro完成基本的登录
shiro介绍
Apache Shiro 是 Java 的一个安全框架。目前,使用 Apache Shiro 的人越来越多,因为它相当简单,对比 Spring Security,可能没有 Spring Security 做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的 Shiro 就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。
使用shiro完成基本的登录
首先需要创建一个shiro配置文件(shiro.ini)
请填写以下内容
[users] zs=123 ls=123456 ww=123456789
这里先使用稍后说明具体作用
创建一个测试类
导入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>
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
登录异常分析
- 用户名在配置文件中不存在时
- 抛出UnknownAccountException
- 用户名存在但密码错误时
- IncorrectCredentialsException
- 用户名和密码都正确
- subject.isAuthenticated()则会返回true
- 用户名在配置文件中不存在时
配置文件分析
- shiro的配置文件其实是方便使用者测试或入门使用
- [users]下代表着所有的用户
- 用户名=密码的键值对存储形式
shiro基本使用和完成登录相关推荐
- shiro解决一个账号异地登录的问题
shiro解决一个账号异地登录的问题 参考文章: (1)shiro解决一个账号异地登录的问题 (2)https://www.cnblogs.com/zeussbook/p/10882426.html ...
- 超详细!附源码!SpringBoot+shiro+mybatis+Thymeleaf实现权限登录系统
最近在做一个期末作品,就是使用ssm+thymeleaf+vue+shiro完成一个具有权限登录,且能实现用户信息增删查改的这么一个项目,下面仅仅是实现权限认证和登录.为什么我选shiro,而不选sp ...
- spring + shiro + cas 实现sso单点登录
sso-shiro-cas spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次,项目源码 系统模块说明 cas: 单点登录模块,这里直接拿的是cas的项目改了点样 ...
- springboot+shiro+jwt实现token认证登录
准备: springboot 2.5.5 jdk 1.8 没有操作刷新token功能,也没有放redis做缓存 1.先贴代码 2.后讲一下验证逻辑 1.导入依赖 <!--shiro-->& ...
- Shiro框架中实现CA登录及免密功能
准备工作 安装CA证书,这个一般在网站首页就会提供下载链接. 插入USBKey,一个类似U盘的东西,需要自主申请办理. 将USBKey绑定到对应网站的账号上. 登录流程概要 主要代码 jsp < ...
- 【Shiro】7、Shiro实现控制用户并发登录并踢人下线
在传统的项目中,同一账户是允许多人同时登录在线的,有的使用场景恰恰是不允许多人同时在线的,那么我们可以通过 Shiro 来控制并发登录,并实现后登录的用户,挤掉前面登录的用户 1.并发登录过滤器 pa ...
- shiro处理ajax请求未登录,shiro处理ajax请求session失效跳转
最近在学习shiro时遇到一个问题,在ajax请求时,若是session失效时,没法正确的跳转登陆页面.在以前的项目中处理的方法是经过自定义一个过滤器来处理,session失效时返回错误码来处理.但由 ...
- 4、Shiro之IniRealm以及用户登录认证,角色认证,权限认证
1.我们在项目test文件夹下面新建resourse文件夹并将她设置为资源文件夹: 2.在resourse文件夹下面新建user.ini文件 user.ini文件里面声明一个用户: 先写一个用户标签[ ...
- 菜鸟学习shiro之入门的简单登录认证和身份认证1
最近学习了四郎,学的是天南海北,一头雾水,概念懂了,实践呐,就很是缺乏,于是跟着慕课网的视频教程敲敲代码 果然加深了理解,话不多说,直接看代码 Maven的依赖: <dependencies&g ...
最新文章
- OSChina 周三乱弹 —— 孤独到都和病毒发生了感情了
- linux下安装mysql5.7.25详细教程
- 1分钟破解3dState '学习版'得一些版权信息。
- ES6-14 Unicode表示法、字符串方法、模板字符串
- .NET Core 3.0 新 JSON API - Utf8JsonWriter
- 最新xampp下安装mod_security,mod_evasive,mod-cband笔记
- Vue项目 开启gzip
- python之tkinter使用-消息弹框
- MySQL配置文件my.cnf参数优化和中文详解
- (黑苹果efi文件)B550-I Ryzen 9 5950X RX 5700 XT 黑苹果efi引导文件
- 统计学习之第二天(可汗学院公开课:统计学)
- BeagleBone Black 从零到一 (2 MLO、U-Boot)
- 如何安装最新版本的office(preview预览版)、更新
- C#操作MicroSoft Word的代码
- taobao.itemprops.get( 获取标准商品类目属性 )
- 账号批量注册软件开发启示录
- mac 升级php 到7,macOS High Sierra 10.13升级PHP到7.3并创建Laravel 7项目
- 定积分在几何学上的应用
- tif文件转为shp文件_从Tif文件转为shp文件(ArcMap,代码)、gdal打包问题
- 计算机类一级学术刊物、核心刊物列表及简介