Shiro简述

11 篇文章 0 订阅

Shiro

简介

Apache Shiro 是一个功能强大且易于使用的Java安全框架,用于执行身份验证,授权,加密和会话管理。使用Shiro易于理解的API,您可以快速轻松地保护任何应用程序-从最小的移动应用程序到最大的Web和企业应用程序。

Shiro四个核心模块

Authentication:身份认证/登录,验证用户是不是拥有相应的身份;
Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;
Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通 JavaSE 环境的,也可以是如 Web 环境的;
Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;

Shrio三大核心组件

Subject:主体,可以看到主体可以是任何可以与应用交互的“用户”;
SecurityManager:相 当 于 SpringMVC 中 的 DispatcherServlet

Realm:可以有 1 个或多个 Realm,可以认为是安全实体数据源,即用于获取安全实体的;可以是 JDBC 实现,也可以是 LDAP 实现,或者内存实现等等;由用户提供;注意:Shiro不知道你的用户/权限存储在哪及以何种格式存储;所以我们一般在应用中都需要实现自己的 Realm;

Shiro实现原理

应用代码通过 Subject 来进行认证和授权,而 Subject 又委托给 SecurityManager; 我们需要给 Shiro 的 SecurityManager 注入 Realm,从而让 SecurityManager 能得到合法的用户及其权限进行判断。

Session管理

shiro作为一款安全管理框架,对状态保持有很强的需要。比如最常用的用户认证,就必须状态的保持,以及其他的一些功能实现的需要。

Shiro提供了一整套session管理方案

1、shiro的session方案和任何容器无关

2、javaSE也可以使用

3、可以方便的扩展定制存储位置(内存,缓存,数据库等)

4、对web透明支持,用了shiro的session后,项目中关于session的代码完全不用任何改动

5、提供了全面的session监听机制和session检测机制,对session可以细粒度操作

核心对象

1、SimpleSession:Session的实现类,完成Session基本功能

2、SimpleSessionFactory:生产SimpleSession

3、SessionDAO:默认的实现类,MemorySessionDAO,由SessionManager创建,负责存储所有session对象,存储在内存中

4、DefaultSessionManager:由SecurityManager创建,负责创建、管理SessionFactory和SessionDAO

Session监听

session有三个核心过程:创建、过期、停止

过期:session的默认过期时间为30分钟。通过对比最近一次使用时间和当前使用时间判断。session不会自动报告过期,需要检测器检测时,或再次访问时,才可以识别是否过期并移除

停止:用户主动logout,或者主动主动调用session.stop();这两种情况会将session标志为停止状态

Session检测

用户如果没有主动退出登录,只是关闭浏览器,则session是否过期无法获知,也就不能停止session。为此,shiro提供了session的检测机制,可以定时发起检测,识别session过期并停止session。

session检测默认开启,只需要修改检测的间隔时间就行了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值