【Shiro】六、Apache Shiro Session管理
1、Session的介绍
关于Session
会话:从启动一个Session到关闭这个Session作为一个会话,是对客户端和服务器端交互的一种封装,带有时效性
会话的产生:
一般从容器中产生
Web container:Web容器,如Tomcat,这些容器对Session进行了实现,可以产生Session
EJB Stateful Session Beans:比较少用
会话的应用:
Mobile
Web
分布式集群
Shiro Session
基于POJO
可以自定义Session存储的方式,保存到内存、文件、数据库都可以
容器无关的集群
客户端访问多样化
事件监听
主机地址记忆,可以知道由哪台主机创建
Web使用透明化,不需要关心Session怎么创建,只需要知道如何使用
支持SSO,单点登录
使用Session
Subject currentUser = SecurityUtils.getSubject();
Session session = currentUser.getSession(true);
session.setAttribute("someKey", somValue);
subject.getSession(flag)
如果subject存在session,直接返回session
如果subject不存在session,flag=true,则创建一个新的Ssssion并返回
如果subject不存在session,flag=false,则返回null
类似servlet中的Session
支持所有应用,适合但不限于Web应用
2、SessionManager
DefaultSessionManager:默认实现
Session Timeout:Session的有效期
Session Listeners:面向事件、实现SessionListener接口
Session Storage:Session的保存形式
SessionDAO接口抽象
in-memory-only:默认,使用内存保存Session
EHCache SessionDAO:使用磁盘保存Session的实现
EhCache SessionDAO的使用
配置ehcache.xml
Session Cache Name
Session IDs
SessionIdGenerator组件:用于生成SessionID
JavaUuidSessionIdGenerator:默认实现,使用Java的uuid
自定义
Session Validation
判断Session是否过期
Lazy Validation:使用的时候才判断
Session孤儿(orphan):使用Lazy时,某些Session过期了,仍长期存在。
SessionValidationScheduler
定期删除Session孤儿
ExecutorServiceSessionValidationScheduler:默认实现
自定义SessionValidationScheduler
关闭Session Validation
关闭Session删除功能
3、Session集群
用于实现Session的集群
Shiro支持分布式缓存
Web容器环境
Native环境
基于POJO多层架构
支持集群的SessionDAO
透明的SessionManager
支持集成多种分布式缓存服务器
EnterpriseCacheSessionDAO
activeSessionsCache
第三方集成
Ehcache+Terracotta
Zookeeper
4、Session和用户状态
有状态的应用
Shiro默认使用Session保存认证状态
通过SessionId获取用户状态
无状态的应用
自定义混合方案
SessionStorageEvaluator
【Shiro】六、Apache Shiro Session管理的更多相关文章
- 【Shiro】Apache Shiro架构之集成web
Shiro系列文章: [Shiro]Apache Shiro架构之身份认证(Authentication) [Shiro]Apache Shiro架构之权限认证(Authorization) [Shi ...
- 【Shiro】Apache Shiro架构之身份认证(Authentication)
Shiro系列文章: [Shiro]Apache Shiro架构之权限认证(Authorization) [Shiro]Apache Shiro架构之集成web [Shiro]Apache Shiro ...
- 【Shiro】Apache Shiro架构之自定义realm
[Shiro]Apache Shiro架构之身份认证(Authentication) [Shiro]Apache Shiro架构之权限认证(Authorization) [Shiro]Apache S ...
- 【Shiro】Apache Shiro架构之权限认证(Authorization)
Shiro系列文章: [Shiro]Apache Shiro架构之身份认证(Authentication) [Shiro]Apache Shiro架构之集成web [Shiro]Apache Shir ...
- [转载] 【Shiro】Apache Shiro架构之实际运用(整合到Spring中)
写在前面:前面陆陆续续对Shiro的使用做了一些总结,如题,这篇博文主要是总结一下如何将Shiro运用到实际项目中,也就是将Shiro整到Spring中进行开发.后来想想既然要整,就索性把Spring ...
- 细说shiro之六:session管理
官网:https://shiro.apache.org/ 我们先来看一下shiro中关于Session和Session Manager的类图. 如上图所示,shiro自己定义了一个新的Session接 ...
- 让Apache Shiro保护你的应用
在尝试保护你的应用时,你是否有过挫败感?是否觉得现有的Java安全解决方案难以使用,只会让你更糊涂?本文介绍的Apache Shiro,是一个不同寻常的Java安全框架,为保护应用提供了简单而强大的方 ...
- Apache Shiro 手册
(一)Shiro架构介绍 一.什么是Shiro Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能: 认证 - 用户身份识别,常被称为用户"登录 ...
- Apache Shiro 使用手册---转载
原文地址:http://www.360doc.com/content/12/0104/13/834950_177177202.shtml (一)Shiro架构介绍 一.什么是Shiro Apache ...
- Apache Shiro 使用手册
http://kdboy.iteye.com/blog/1154644 (一)Shiro架构介绍 一.什么是Shiro Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加 ...
随机推荐
- html标签内部简单加js 一维数组求最大值 最小值两个值位置和数字金字塔图形
html标签内部,简单加js <a href=""></a><!DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...
- mongodb配置详解
#启用日志文件,默认启用 journal=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false quiet=false # 日志文件位置 logpath=/usr/loc ...
- ubuntu snap 包管理器
基本使用 snap find $package snap install $package [--channel=beta] snap list snap refresh $package [--ch ...
- Appium移动端自动化:Api接口详解
滑动操作与拖拽操作 # 滚动处理 # elementObj1 目标滚动元素,elementObj2 起始滚动元素 # 底层通过action操作,与web ui相反,origin_el为目标元素,des ...
- java多线程学习笔记(八)
本节开始线程间通信: 使用wait/notify实现线程间通信 生产者/消费者模式的实现 方法join的使用 ThreadLocal类的使用 可以通过使用 sleep() 结合 while(true) ...
- JMeter的那些问题
我们从以下几个点来看jmeter: 1.jmeter是什么? 2.jmeter为什么我们要使用jmeter?他可以帮我们解决那些事情? 3.怎样使用jmeter做这些事情? 4.我们在什么时候会使用j ...
- C#获取文件夹/文件的大小以及占用空间 转摘自:http://www.cnblogs.com/chenpeng-dota/articles/2176470.html
C#获取文件夹/文件的大小以及占用空间 今天,头给了个任务:写个方法,我会给你个路径,计算这个路径所占用的磁盘空间 . 然后,找了很多资料.但大部分都是获取文件夹/文件的大小的.对于占用空间的没有成品 ...
- mysql的几种锁
由于对于mysql的锁机制了解的并不深入,所以翻阅了资料,整理一下自己所理解的锁.以mysql数据库的InnoDB引擎为例,因为InnoDB支持事务.行锁.表锁:且现在大部分公司使用的都是InnoDB ...
- [web设计]带有方向感应的hover effect
See the Pen bdxLQa by jeremylee (@lijie33402) on CodePen. codepen不知道怎么嵌入到cnblogs..待编辑 参考资料 参考博客
- Sass--伪类嵌套
其实伪类嵌套和属性嵌套非常类似,只不过他需要借助`&`符号一起配合使用. a { &:link, &:visited { color: blue; } &:hover ...