什么是Shiro

一、什么是Shiro1

Apache Shiro是一个强大易用的Java安全框架,提供了(认证、授权、加密和会话管理)等功能:

  • 认证 - 用户身份识别,常被称为用户“登录”;
  • 授权 - 访问控制,系统提供的赋予用户访问某个功能的能力-----让系统知道你能做什么
  • 密码加密 - 保护或隐藏数据防止被偷窥;
  • 会话管理 - 每用户相关的时间敏感的状态。
  • 权限数据模型(权限表、角色表、用户表、角色权限关系表、用户角色关系表)
  • 常见的权限控制的方式
  • URL拦截权限控制:基于过滤器或者拦截器
  • 方法注解权限控制:基于代理技术
     
    对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。并且相对于其他安全框架,Shiro要简单的多。 
    二、能做什么

以下是你可以用 Apache Shiro所做的事情:
1. 验证用户
2.   对用户执行访问控制,如:
                判断用户是否拥有角色admin。
                判断用户是否拥有访问的权限
5.   在任何环境下使用 Session API。例如CS程序。
6.   可以使用多个用户数据源。例如一个是oracle用户库,另外一个是mysql用户库。
7.  单点登录(SSO)Single Sign On 功能。(一站式登录,天猫和淘宝)
8.  “Remember Me”(记住我)服务 ,类似购物车的功能,shiro官方建议开启。

二、特点

  • 易于使用
  • 广泛性
  • 灵活性
  • web能力
  • 可插拔
    (Spring  Grails 、Wicket、Tapestry、Mule、Apache Camel、Vaadin̑ 无缝集成
    image.png

三、运行流程图(执行流程参见:认证过程)
image.png

四、体系结构(三个核心组件)

ApplicationCode:

  • 1.   应用程序代码,开发人员编写的代码
  • Subject
  • 当前跟软件交互的东西(比如用户,Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。 )
  • SecurityManager:
  • 它是Shiro框架的核心,典型的Facade(外观)模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
  • Realms:
  • 1.   负责访问安全数据(用户数据、角色数据、权限数据)
  • Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。
  • 从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。配置多个Realm是可以的,但是至少需要一个。
  • Shiro内置了可以连接大量安全数据源(又名目录)的Realm,如LDAP、关系数据库(JDBC)、类似INI的文本配置资源以及属性文件等。如果缺省的Realm不能满足需求,你还可以插入代表自定义数据源的自己的Realm实现。
  • 框架体系结构图

**Shiro主要组件还包括: **

  • Shiro的4大部分 (身份验证,授权,会话管理和加密)
  • Authentication(身份验证):,简称“登录”。
  • Authorization(授权):,给用户分配角色或者权限资源
  • Session Management:用户session管理器,可以让CS程序也使用session来控制权限
  • Cryptography:把JDK中复杂的密码加密方式进行封装。

三、Shiro提供的权限控制方式(参见Shiro与Spring整合)

  • URL拦截权限控制
  • 方法注解权限控制
  • 页面标签权限控制
  • 代码级别权限
posted @   汉源魂  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示