1.Shiro概述

Shiro是一款Apache提供的权限校验框架, Shiro同时也是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序,特别是今天对权限校验和管理特别严格,大家有必要对shiro有一个基本的认识和学习。推荐了解java培训课程。

2.Shiro的三大核心组件

(1)Subject :当前用户的操作

(2)SecurityManager:用于管理所有的Subject

(3)Realms:用于进行权限信息的验证

如下图:各组件之间的调用关系:
Subject:翻译为主角,当前参与应用安全部分的主角。可以是用户,可以试第三方服务,可以是cron 任务,或者任何东西。主要指一个正在与当前软件交互的东西。所有Subject都需要SecurityManager,当你与Subject进行交互,这些交互行为实际上被转换为与SecurityManager的交互。

SecurityManager:安全管理员,Shiro架构的核心,它就像Shiro内部所有原件的保护伞。然而一旦配置了SecurityManager,SecurityManager就用到的比较少,开发者大部分时间都花在Subject上面请记得,当你与Subject进行交互的时候,实际上是SecurityManager在背后帮你举起Subject来做一些安全操作。

Realms:Realms作为Shiro和你的应用的连接桥,当需要与安全数据交互的时候,像用户账户,或者访问控制,Shiro就从一个或多个Realms中查找。Shiro提供了一些可以直接使用的Realms,如果默认的Realms不能满足你的需求,你也可以定制自己的 Realms。

3.Shiro的十大功能特点

3.1功能特点

Shiro包含10个内容,如下图:
(1) Authentication:身份认证/登录,验证用户是不是拥有相应的身份。

(2)Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限。

(3)Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通 JavaSE 环境的,也可以是如 Web 环境的。

(4)Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储。

(5)Web Support:Web支持,可以非常容易的集成到 web 环境。

(6)Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率。

(7)Concurrency:shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去。

(8)Testing:提供测试支持。

(9)Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问。

(10)Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。

4.Shiro 的运行原理

  1. Subject:主体,可以看到主体可以是任何与应用交互的“用户”。

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

  3. Authenticator:认证器,负责主体认证的,这是一个扩展点,如果用户觉得 Shiro 默认的不好,我们可以自定义实现。其需要认证策略(Authentication Strategy),即什么情况下算用户认证通过了。

  4. Authrizer:授权器,或者访问控制器。它用来决定主体是否有权限进行相应的操作,即控制着用户能访问应用中的哪些功能。

  5. Realm:可以有1个或多个 Realm,可以认为是安全实体数据源,即用于获取安全实体的。它可以是 JDBC 实现,也可以是 LDAP 实现,或者内存实现等。

  6. SessionManager:如果写过 Servlet 就应该知道 Session 的概念,Session 需要有人去管理它的生命周期,这个组件就是 SessionManager。而 Shiro 并不仅仅可以用在 Web 环境,也可以用在如普通的 JavaSE 环境。

  7. SessionDAO:DAO 大家都用过,数据访问对象,用于会话的 CRUD。我们可以自定义 SessionDAO 的实现,控制 session 存储的位置。如通过 JDBC 写到数据库或通过 jedis 写入 redis 中。另外 SessionDAO 中可以使用 Cache 进行缓存,以提高性能。

  8. CacheManager:缓存管理器。它来管理如用户、角色、权限等的缓存的。因为这些数据基本上很少去改变,放到缓存中后可以提高访问的性能。

  9. Cryptography:密码模块,Shiro 提高了一些常见的加密组件用于如密码加密/解密的。

5、Shiro的基本入门

今天我们 演示 Shiro 的 入门,没有整合任何框架, 只是单纯的演示Shiro运行原理,所以无需创建经典的五张表。

5.1 使用 Idea 创建一个Maven项目

在pom.xml中添加如下依赖:
5.2 任意创建一个包,在里面创建一个 测试的Demo类

package me.aihe; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Demo
private static final transient Logger log = LoggerFactory.getLogger(Tutorial.class);public static void main (String[] {log . info("My First Apache Shiro Application"); exit 0 );
}

5.3 创建 一个 shiro.ini 配置文件

Shiro提供了一个通用的方案通过 INI 进行配置 ,当然也可以通过XML,YMAL,JSON等进行配置。在resource目录下面,创建一个shiro.ini的文件。内容如下:
5.4 引用Shiro.ini 配置进行测试

现在改变我们的Demo类文件,内容如下




6、通过shiro演示我们学到了什么

这个相对来说是一个简单的程序,但也证明了一些shiro的基本用法,我们可以通过shiro进行认证,权限控制等。

Shiro小白新手入门教程,一看就会相关推荐

  1. 网站服务器linux运维,值得一看的Linux新手入门教程_网站服务器运行维护,linux教程...

    什么是Linux镜像?_网站服务器运行维护 镜像是一种文件形式,可以把许多文件做成一个镜象文件,与GHOST等程序放在一个盘里用GHOST等软件打开后,可以恢复成许多文件,总之用镜象给用户装系统就是原 ...

  2. 【我的Latex学习之路】转载自:E喵的LaTeX新手入门教程(1)准备篇

    E喵的LaTeX新手入门教程(1)准备篇 **声明:**本篇博客转载自E喵的LaTeX新手入门教程,具体的出处我也找不到了,网络上好多好多,觉得他写的不错,于是就作为自己入门的教程,摘抄至此,重新排版 ...

  3. 【LaTeX】E喵的LaTeX新手入门教程(4)图表

    这里说的不是用LaTeX画图,而是插入已经画好的图片..想看画图可以把滚动条拉到底.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇  [LaTeX]E喵的LaTeX新手入门教程(2)基 ...

  4. 想学python都要下载什么软件-学编程闲余时间建议下载的软件_Python新手入门教程...

    原标题:学编程闲余时间建议下载的软件_Python新手入门教程 Python新手入门教程_在手机上就能学习编程的软件 很多小伙伴会问:我在学编程,想利用坐地铁坐公交吃饭间隙学编程,在手机上能学编程的软 ...

  5. 编程入门python语言是多大孩子学的-不学点编程,将来怎么给孩子辅导作业―Python新手入门教程...

    为了填满AI时代的人才缺口,编程语言教育都从娃娃抓起了!如果你还不懂Python是什么将来怎么给孩子辅导作业呢? Python新手入门教程 近期,浙江省信息技术课程改革方案出台,Python言语现已断 ...

  6. 【LaTeX】E喵的LaTeX新手入门教程(6)中文

    假期玩得有点凶 ._.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇  [LaTeX]E喵的LaTeX新手入门教程(2)基础排版  [LaTeX]E喵的LaTeX新手入门教程(3)数学 ...

  7. 【LaTeX】E喵的LaTeX新手入门教程(5)参考文献、文档组织

    这不是最后一篇,明天开始建模所以会从6号开始继续更新.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇  [LaTeX]E喵的LaTeX新手入门教程(2)基础排版  [LaTeX]E喵的 ...

  8. 【LaTeX】E喵的LaTeX新手入门教程(3)数学公式

    昨天熄灯了真是坑爹.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇  [LaTeX]E喵的LaTeX新手入门教程(2)基础排版上一期测试答案1.大家一开始想到的肯定是\LaTeX{}e ...

  9. 【LaTeX】E喵的LaTeX新手入门教程(2)基础排版

    换了块硬盘折腾了好久..联想的驱动真坑爹.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇文档框架嗯昨天我们已经编写了一个最基本的文档,其内容是这样的:\documentclass{ar ...

  10. Jeecg-Boot 快速开发平台,新手入门教程

    Jeecg-Boot入门教程必看(新手学习) 开发环境搭建   http://doc.jeecg.com/1273969 项目如何启动   http://doc.jeecg.com/1273967 J ...

最新文章

  1. ROSE 好的参考资料 http://topic.csdn.net/t/20020716/14/878323.html
  2. Oracle操作数据库常用名命令(set linesize,pagesize,conn命令,feedback命令)
  3. 计算机usb2.0失效,Win10电脑USB2.0-CRW没有驱动程序的解决方法
  4. spring boot自测_将测微仪与Spring Boot 2一起使用
  5. java上机作业要注意什么_Java第八次上机作业
  6. cad常青藤插件_CAD 2020软件安装包+插件大合集+完整视频教程,自学也可以的
  7. 程序员30岁后怎么办
  8. eclipse中文版自动补全设置
  9. 汇编语言学习笔记(【汇编语言】小甲鱼零基础汇编)
  10. 学会这几个可视化布局思路,轻松做出企业级可视化大屏
  11. mysql 生日提醒
  12. 【03】图解原型和原型链by魔芋
  13. Three.js 基础之灯光
  14. 必知C++算法之排列组合基本操作
  15. struct 结构体的内存对齐
  16. Eclipse里面web项目上面的小地球消失的原因
  17. 病毒无孔不入:电邮一打开病毒自然来(转)
  18. html右侧导航栏固定,固定导航栏.html
  19. Vivado下集成逻辑分析仪ILA入门续
  20. 【PMSM】一. 经典电流环、速度环设计(上)

热门文章

  1. 清华长庚医院通过医视云平台举办首次肝胆外科肿瘤远程多学科会诊
  2. 江苏计算机等级考试二级office题库,2020年江苏省计算机二级Office考试易考套餐:二级MS Office高级应用全程班(网课+题库)...
  3. C语言运算符都有那些?
  4. 有源滤波器快速使用设计和精确设计
  5. 【笔记:傅里叶分析】数学基础——傅里叶级数与傅里叶变换
  6. 计算机核心期刊排名及投稿信息
  7. mysql 多重循环_SQL循环语句 详解
  8. 值得收藏的资源网站大全
  9. 传智播客黑马程序员之JAVA基础深入浅出精华版
  10. iMindMap2020 中文旗舰免费版