Shrio 学习笔记(一)
【个人理解】
认证在授权之上完成,当用户登陆时,要先核验其角色,这就是授权;授权成功后,核验登陆账号和密码,这就是认证。
一个用户可以有多个角色。
shiro是由apache提供的。创建一个maven项目,添加shiro依赖
<!--shiro 核心包--><!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-core --><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-core</artifactId><version>1.4.0</version></dependency>
一、认证
shiro认证
代码实现:在这里,通过SimpleAccountRealm 来模拟账户领域,保存用户。接下来,按步骤:
①创建SecurityManager
②主体(subject)请求认证
③由SecurityManager提交认证
④Authenticator认证
⑤Realm验证
这里,重点是前三步
private DefaultSecurityManager defaultSecurityManager;//简单的账户领域,为了演示private SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();//@Beforepublic void addUser(){//先添加一个用户simpleAccountRealm.addAccount("admin","123456");}@Testpublic void testAuthentication(){//1.构建SecurityManager环境defaultSecurityManager = new DefaultSecurityManager();defaultSecurityManager.setRealm(simpleAccountRealm); //将simpleAccountRealm设置到manager环境中//2.由主体提交认证请求SecurityUtils.setSecurityManager(defaultSecurityManager); //设置manager环境Subject subject = SecurityUtils.getSubject(); //获取主体//默认构造器,构建要验证的测试数据UsernamePasswordToken token = new UsernamePasswordToken("admin","123456");subject.login(token ); //提交认证登陆//3.1 登陆认证System.out.println("认证结果:"+subject.isAuthenticated());//3.2 退出subject.logout();System.out.println("退出后,认证结果:"+subject.isAuthenticated());}
运行效果:
二、授权
shiro授权
步骤类似于认证,相对于认证,就是要先授权了,才会进行认证,代码中,在账户领域中授予用户权限,认证时,添加授权认证,其他代码类似。
@Beforepublic void addUser(){//先添加一个用户,带角色(多个)simpleAccountRealm.addAccount("admin","123456","admin","user"); }
登陆认证subject.checkRoles("admin","user"); //授权
System.out.println("认证结果:"+subject.isAuthenticated());
GOOD LUCK!!!
Shrio 学习笔记(一)相关推荐
- SpringBoot(学习笔记)
SpringBoot学习笔记 从今天开始就进入微服务阶段 一些小问题 1.HelloWorld 1.1回顾什么是Spring 1.2什么是SpringBoot 1.3微服务架构 2.第一个Spring ...
- SpringBoot 学习笔记
SpringBoot 学习笔记 文章目录 SpringBoot 学习笔记 1. SpringBoot简介 1.1 什么是Spring 1.2 Spring 是如何简化Java开发的 1.3 什么是 S ...
- PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...
- 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 2020年Yann Lecun深度学习笔记(下)
2020年Yann Lecun深度学习笔记(下)
- 2020年Yann Lecun深度学习笔记(上)
2020年Yann Lecun深度学习笔记(上)
- 知识图谱学习笔记(1)
知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...
- 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记
计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...
最新文章
- 浅谈《think in java》:一 对象导论总结
- 转发和重定向的区别是什么
- [No000018]都在背单词,为啥学霸那么厉害-如何在一天内记200个单词?
- Syntax error: word unexpected (expecting ))错误的解决方法
- activemq 延时队列以及不生效问题
- Linux常用的几个监控系统性能的命令
- 程序员面试金典——17.1无缓存交换
- Java在W10_java——基础 在w10环境下如何配置java环境
- 【NLP】学不会打我 半小时学会基本操作 13 孪生网络
- 教你免费轻松下载百度文库的文件
- LabVIEW编程LabVIEW开发 施耐德
- Mean Rank 和Mean reciprocal rank
- Unity Json存档读档操作
- 计算机网络1-6合集
- 离职,见人品,显格局
- Oracle的对象权限、角色权限、系统权限
- 给某汉化联盟讲些历史故事
- 奖金100万!北大“韦神”获奖了!
- 使用英特尔GPA优化《剑侠情缘三》游戏的性能
- Reselection, Redirection 与 Handover的区别
热门文章
- mx250是什么_MX250相当于什么显卡 MX250笔记本能玩Lol/CF/吃鸡游戏吗?
- win更新管理工具有用吗_7个非常有用的在线业务管理工具
- 使用Iframe嵌套其他系统页面遇到的跨域问题
- MATLAB代码:电动汽车有序充电策略 基于峰谷分时电价引导下的电动汽车充电负荷优化
- tenforflow版YOLOv3下COCO格式的raccoon(浣熊)数据集的准备(未完待续)
- kubernets 学习记录
- 移动云迁移工具:Xen虚拟化迁移到移动云
- IE已经阻止此站点以不安全的方式使用ActiveX控件的解决
- linux中sed怎么反选,awk的批量replace功能
- R包circlize:柱状图用腻了?试试好看的弦状图