shiro之第一个程序认证
有关shiro的介绍请访问https://blog.csdn.net/Kevinnsm/article/details/111823268
SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
Realm: Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。
下面模拟shiro的认证
1.导入shiro-core的坐标
<dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-core</artifactId><version>1.7.0</version></dependency>
2.在resouces资源目录下,创建shiro.ini文件,用来保存账户和密码,模拟数据库
[users]
tom=123
jone=456
jane=789
3.模拟认证
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.subject.Subject;/*** @author:抱着鱼睡觉的喵喵* @date:2020/12/27* @description:*/
public class TestAuthenticator {public static void main(String[] args) {//1.创建security manager安全管理器对象DefaultSecurityManager securityManager=new DefaultSecurityManager();//2.给安全管理器设置realmsecurityManager.setRealm(new IniRealm("classpath:shiro.ini"));//3.SecurityUtils 给全局安全工具类设置安全管理器SecurityUtils.setSecurityManager(securityManager);//4.关键对象 subject主体Subject subject = SecurityUtils.getSubject();//5.创建令牌,相当于用户登录时输入的账户和密码(UsernamePasswordToken token = new UsernamePasswordToken("tom","123");try {System.out.println("认证状态:"+subject.isAuthenticated());subject.login(token);//用户认证System.out.println("已认证");System.out.println("认证状态:"+subject.isAuthenticated());}catch (Exception e){e.printStackTrace();}}
}
运行结果:
当我把令牌的账户改成配置文件shiro.ini不存在的账户,密码不变
UsernamePasswordToken token = new UsernamePasswordToken("zsh","123");
再次运行出现以下情况,未知的账户异常,表明账户不存在
当我把密码改错,账户不变时
UsernamePasswordToken token = new UsernamePasswordToken("tom","123456");
再次运行,发现出现了无效的凭证,所谓的凭证就是密码,也就是密码不对
shiro之第一个程序认证相关推荐
- rails再体验(第一个程序)
掌握redmine plugin开发的目标在2016年未实现,2017年继续. 选择<Ruby on Rails Tutorial>教程,windows安装railsinstaller,该 ...
- 【历史上的今天】12 月 10 日:世界上第一位程序员诞生;Ada 语言发布;第一人称射击游戏的开拓者
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 12 月 10 日,在 120 年前的今天,瑞典国王和挪威诺贝尔基金会首次颁发了诺贝尔奖.根据诺贝尔 ...
- Spring Boot 整合 shiro 之盐值加密认证详解(六)
Spring Boot 整合 shiro 之盐值加密认证详解 概述 不加盐认证 加入密码认证核心代码 修改 CustomRealm 新增获取密文的方法 修改 doGetAuthenticationIn ...
- Windows Phone的应用程序认证要求
WindowsPhone的应用程序认证要求 本文介绍了 WindowsPhone 应用程序或游戏要通过认证并在 WindowsPhone Marketplace 中发布而必须满足的策略和技术要求. 1 ...
- 0基础学python第一天:认识python,安装python,输出第一个程序
目录 目录 目录 一(了解)Python简介: 二.发展历程: 三.Python 特点: 四.Python语言主要应用领域: 1:人工智能 2:云计算 3:Web开发 4:爬虫技术 5:网络游戏开发 ...
- 零起点学算法01——第一个程序Hello World!
零起点学算法01--第一个程序Hello World! Description 题目很简单 输出"Hello World!"(不含引号),并换行. Input 没有输入 Outpu ...
- 她,诗人拜伦之女,英国数学家,历史上第一位程序员
作者丨吴军 来源丨大数据文摘 摘自丨<信息论> 人类使用机械处理信息的尝试是由两个看似不该有交集的英国人开启的. 在英格兰中部莱斯特郡的柯比-马洛里庄园,住着一对母女. 1816年初那个多 ...
- python定义一个变量_Python新手上车3:Python第一个程序和变量
第一个程序 上节内容我们提到了如何安装Python 以及安装配置VSCode,这节内容我们继续介绍第一个程序的建立: 1.在VS的左上角点击建立一个新的程序,命名为 python_0301_code. ...
- 第一个程序01 - 零基础入门学习汇编语言20
第四章:第一个程序01 让编程改变世界 Change the world by program 引言 现在我们将开始编写完整的汇编语言程序,用编译器将它们编译成为可执行文件(如:*.exe文件),在操 ...
最新文章
- MM32F3277 MicroPython 实验板设计和软件测试
- java 反射机制--根据属性名获取属性值
- 清华大学医学院张明君团队招聘脑机接口与微纳医学交叉领域博士后
- sybase存储过程修改
- linux shell 删除两个文件相同部分
- Linux下的权限掩码umask
- Python与Golang协程异同
- html的模板引入,rel=import 未来的HTML模板引入方式
- (135)FPGA面试题-介绍FPGA的速度等级与温度等级
- 最新破解无线网络破解教程,一键破解wpa/wpa2密码软件下载。破解不用抓包不用跑字典。快速破解wpa/wpa2密码...
- TIdTCPClient
- python、变量命名中字母不区分大小写_python变量名不区分大小写吗
- 我深爱的Java,对不起,我出轨了!!!呸!渣男!
- Cesium环境 Primitives加载广告牌出现Cannot read property ‘globe‘ of undefined
- discuz!Q免登陆蓝天采集器api发布模块
- 一个简单的安居客房屋信息爬虫
- 学校教材订购系统课程设计
- SpringCloud之利用FTL生成Word报表并下载
- PySerial学习系列1--serial.tools
- Unable to negotiate with x.x.x.x port 22: no matching key exchange method found. Their offer: diffie
热门文章
- Redis学习笔记1-安装配置
- WPF中实现验证码功能
- ALinq 入门学习(八)--ALinq 对Vs2010 的支持
- esjava 同步mysql_Elasticsearch和mysql数据同步(elasticsearch-jdbc)
- mac上php环境_在Mac系统下配置PHP运行环境
- matlab图像相加例子,MATLAB图像处理例子
- php 正则 菜鸟,PHP正则表达式基础入门
- 10 windows 启动虚拟机报错_Windows 系统如何安装 Docker
- 用计算机图形学画字母,r 语言快速出图——单因素方差带字母显著性标记
- viso怎么控制连接线_德国菲斯曼故障出现这些字母代码怎么解决?