【shiro从入门到实战教程】第二章 Shiro简介

Apache Shiro是一个轻量级的安全框架,提供用户认证、授权等功能,不依赖Spring,适用于Web、C/S及分布式系统。其核心组件包括Subject、SecurityManager和Realm,分别代表当前操作用户、安全管理及权限数据来源。此外,还包括Authenticator(认证器)、Authorizer(授权器)等,实现全面的权限管理。Shiro通过SessionManager和CacheManager提升性能,并提供了密码加密等相关工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二、Shiro简介

2.1 什么是Shiro

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权。

Spring中有Spring Security(原名Acegi),是一个权限框架,它和Spring依赖过于紧密,没有Shiro使用简单。

Shiro不依赖于Spring,Shiro不仅可以实现web应用的权限管理,还可以实现C/S系统,分布式系统权限管理,Shiro属于轻量框架,越来越多企业项目开始使用Shiro。

使用Shiro实现系统的权限管理,有效提高开发效率,从而降低开发成本。

2.2 三个主要的概念

Subject:简单理解为表示当前操作用户。

SecurityManager:用于管理所有的Subject。

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。

2.3 整体架构

在这里插入图片描述

  • Authenticator:认证器,管理登录与登出。
  • Authorizer:授权器,赋予主体权限。
  • Session Manager:session管理器,session管理机制。不借助任何web容器使用session。
  • Session Dao:session操作,主要增删改查。
  • Cache Manager:缓存管理器。
  • Pluggable Realms(1 or more):shiro与数据库的连接,认证授权校验。
  • Cryptography: 数据加密。

2.4 核心组件

Subject 即主体,外部引用于 Subject 进行交互,Subject 记录了当前操作用户,将用户的概念理解为当前操作的主体,可能是一个通过浏览器请求的用户,也可能是一个运行的程序。Subject 在 Shrio 中是一个接口,接口中定义了很多认证授权相关的方法,外部程序通过 Subject 进行认证授权,而 Subject 是通过 SecurityManager 安全管理器进行认证授权的。

SecurityManager 即安全管理器,对全部的 Subject 进行安全管理,它是 Shrio 的核心,通过 SecurityManager 可以完成全部 Subject 的认证、授权等。实质上 SecurityManager 是通过 Authenticator 进行认证,通过 Authorizer 进行授权,通过 SessionManager 进行会话管理等。SecurityManager是一个接口,继承了 Authenticator,Authorizer,SessionManager 这三个接口。

Authenticator 即认证器,对用户身份进行认证,Authenticator 是一个接口,Shrio 提供了 ModularRealmAuthenticator实现类,通过ModularRealmAuthenticator 基本上可以满足大多数需求,也可以自定义认证器。

Authorizer 即授权器,用户通过认证器认证通过,在访问功能时需要通过授权器判断用户是否有此功能的操作权限。

Realm 即领域,相当于 datasource 数据源,SecurityManager 进行安全认证需要通过 Realm 获取用户权限数据,比如:如果用户身份数据在数据库,那么 Realm 就需要从数据库获取用户身份信息。不要把 Realm 理解成只是从数据源取数据,在 Realm 中还有认证授权校验的相关代码。

SessionManager 即会话管理,Shrio 框架定义了一套会话管理,它不依赖 web 容器的 Session ,所以Shrio 可以使用在非 Web 应用上,也可以将分布式应用的会话集中在一点管理,此特性可使它实现单点登录。

SessionDAO 即会话DAO,是对 Session 会话操作的一套接口,比如要将 Session 存储到数据库,可以通过 jdbc 将会话存储到数据库。

CacheManager 即缓存管理,将用户权限数据存储在缓存,这样可以提高性能。

Cryptografy 即密码管理,Shrio 提供了一套解密/加密的组件,方便开发。比如提供常用的散列、加/解密功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是波哩个波

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值