【个人理解】
认证在授权之上完成,当用户登陆时,要先核验其角色,这就是授权;授权成功后,核验登陆账号和密码,这就是认证。
一个用户可以有多个角色。

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认证

创建SecurityManager
主体提交认证
SecurityManager提交认证
Authenticator认证
Realm验证

代码实现:在这里,通过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授权

创建SecurityManager
主体授权
SecurityManager授权
Authorizer授权
Realm获取角色权限数据

步骤类似于认证,相对于认证,就是要先授权了,才会进行认证,代码中,在账户领域中授予用户权限,认证时,添加授权认证,其他代码类似。

 @Beforepublic  void  addUser(){//先添加一个用户,带角色(多个)simpleAccountRealm.addAccount("admin","123456","admin","user");  }
 登陆认证subject.checkRoles("admin","user");  //授权
System.out.println("认证结果:"+subject.isAuthenticated());

GOOD LUCK!!!

Shrio 学习笔记(一)相关推荐

  1. SpringBoot(学习笔记)

    SpringBoot学习笔记 从今天开始就进入微服务阶段 一些小问题 1.HelloWorld 1.1回顾什么是Spring 1.2什么是SpringBoot 1.3微服务架构 2.第一个Spring ...

  2. SpringBoot 学习笔记

    SpringBoot 学习笔记 文章目录 SpringBoot 学习笔记 1. SpringBoot简介 1.1 什么是Spring 1.2 Spring 是如何简化Java开发的 1.3 什么是 S ...

  3. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  4. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  5. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  6. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  7. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  8. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

  9. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

最新文章

  1. 浅谈《think in java》:一 对象导论总结
  2. 转发和重定向的区别是什么
  3. [No000018]都在背单词,为啥学霸那么厉害-如何在一天内记200个单词?
  4. Syntax error: word unexpected (expecting ))错误的解决方法
  5. activemq 延时队列以及不生效问题
  6. Linux常用的几个监控系统性能的命令
  7. 程序员面试金典——17.1无缓存交换
  8. Java在W10_java——基础 在w10环境下如何配置java环境
  9. 【NLP】学不会打我 半小时学会基本操作 13 孪生网络
  10. 教你免费轻松下载百度文库的文件
  11. LabVIEW编程LabVIEW开发 施耐德
  12. Mean Rank 和Mean reciprocal rank
  13. Unity Json存档读档操作
  14. 计算机网络1-6合集
  15. 离职,见人品,显格局
  16. Oracle的对象权限、角色权限、系统权限
  17. 给某汉化联盟讲些历史故事
  18. 奖金100万!北大“韦神”获奖了!
  19. 使用英特尔GPA优化《剑侠情缘三》游戏的性能
  20. Reselection, Redirection 与 Handover的区别

热门文章

  1. mx250是什么_MX250相当于什么显卡 MX250笔记本能玩Lol/CF/吃鸡游戏吗?
  2. win更新管理工具有用吗_7个非常有用的在线业务管理工具
  3. 使用Iframe嵌套其他系统页面遇到的跨域问题
  4. MATLAB代码:电动汽车有序充电策略 基于峰谷分时电价引导下的电动汽车充电负荷优化
  5. tenforflow版YOLOv3下COCO格式的raccoon(浣熊)数据集的准备(未完待续)
  6. kubernets 学习记录
  7. 移动云迁移工具:Xen虚拟化迁移到移动云
  8. IE已经阻止此站点以不安全的方式使用ActiveX控件的解决
  9. linux中sed怎么反选,awk的批量replace功能
  10. R包circlize:柱状图用腻了?试试好看的弦状图