【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

原文地址:https://www.cnblogs.com/LiveYourLife/p/9093573.html

时间: 2024-10-06 08:23:12

【Shiro】六、Apache Shiro Session管理的相关文章

【Shiro】Apache Shiro架构之集成web

前面两节内容介绍了Shiro中是如何进行身份和权限的认证,但是只是单纯的进行Shiro的验证,简单一点的话,用的是.ini配置文件,也举了个使用jdbc realm的例子,这篇博文主要来总结一下Shiro是如何集成web的,即如何用在web工程中. 写在前面:本文没有使用web框架,比如springmvc或者struts2,用的是原始的servlet,使用的是.ini配置文件,旨在简单粗暴,说明问题.后面会写一些和框架整合的博文. 本文部分参考Apache Shiro的官方文档,文档地址:htt

【Shiro】Apache Shiro架构之身份认证(Authentication)

Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理功能,可为任何应用提供安全保障.本文主要介绍一下Shiro中的身份认证功能,如下: 本文参考自Apache Shiro的官方文档:http://shiro.apache.org/authentication.html. 本文遵循以下流程:先介绍Shiro中的身份认证,再通过一个实例来具体说明一下(基于maven). 1. 认证主体(Authenticating Subjects) Subject 认证主体包

【Shiro】Apache Shiro架构之权限认证(Authorization)

上一篇博文总结了一下Shiro中的身份认证,本文主要来总结一下Shiro中的权限认证(Authorization)功能,即授权.如下: 本文参考自Apache Shiro的官方文档:http://shiro.apache.org/authorization.html. 本文遵循以下流程:先介绍Shiro中的权限认证,再通过一个简单的实例来具体说明一下API的使用(基于maven). 1. 权限认证的核心要素 权限认证,也就是访问控制,即在应用中控制谁能访问哪些资源.在权限认证中,最核心的三个要素

【Shiro】Apache Shiro架构之自定义realm

之前写的博客里都是使用.ini文件来获取信息的,包括用户信息,角色信息,权限信息等.进入系统时,都是从.ini文件这读取进入的.实际中除非这个系统特别特别简单,否则一般都不是这样干的,这些信息都是需要在数据库中进行维护的,所以就需要用到自定义realm了. 写在前面:这篇博文是基于上一篇Shiro集成web基础之上修改的. 1. 数据库建表 首先在数据库中新建三个表:t_user,t_role和t_permission,分别存储用户信息,角色信息和权限信息,建表语句如下: CREATE TABL

让Apache Shiro保护你的应用

在尝试保护你的应用时,你是否有过挫败感?是否觉得现有的Java安全解决方案难以使用,只会让你更糊涂?本文介绍的Apache Shiro,是一个不同寻常的Java安全框架,为保护应用提供了简单而强大的方法.本文还解释了Apache Shiro的项目目标.架构理念以及如何使用Shiro为应用安全保驾护航. 什么是Apache Shiro? Apache Shiro(发音为“shee-roh”,日语“堡垒(Castle)”的意思)是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理功能,

Apache Shiro 快速入门教程,shiro 基础教程 (这篇文章非常好)

第一部分 什么是Apache Shiro     1.什么是 apache shiro :   Apache Shiro是一个功能强大且易于使用的Java安全框架,提供了认证,授权,加密,和会话管理 如同 Spring security 一样都是是一个权限安全框架,但是与Spring Security相比,在于他使用了和比较简洁易懂的认证和授权方式. 2.Apache Shiro 的三大核心组件:   1.Subject :当前用户的操作 2.SecurityManager:用于管理所有的Sub

Shiro学习总结(2)——Apache Shiro快速入门教程

第一部分 什么是Apache Shiro 1.什么是 apache shiro : Apache Shiro是一个功能强大且易于使用的Java安全框架,提供了认证,授权,加密,和会话管理 如同 spring security 一样都是是一个权限安全框架,但是与Spring Security相比,在于他使用了和比较简洁易懂的认证和授权方式. 2.Apache Shiro 的三大核心组件: 1.Subject :当前用户的操作 2.SecurityManager:用于管理所有的Subject 3.R

apache shiro 实战

因为公司用到了shiro,所以自己抽空写了个小例子,方便下次查阅: 1.这是项目大致构架图(至于类的实际内容会在后面有贴出): 2.数据结构说明: User:用户,包含 userName,password Role:角色,包含roleName Permission:权限,包含premissionName SecurityService 是数据访问接口,实现类内容如下: package org.pan.service.impl; import org.pan.bean.Permission; im

Apache Shiro 使用手册 链接目录整理

1.Apache Shiro 使用手册(一)Shiro架构介绍 2.Apache Shiro 使用手册(二)Shiro 认证 3.Apache Shiro 使用手册(三)Shiro 授权 4.Apache Shiro 使用手册(四)Realm 实现 5.Apache Shiro 使用手册(五)Shiro 配置说明 Apache Shiro 使用手册 链接目录整理

008-shiro与spring web项目整合【二】认证、授权、session管理

一.认证 1.添加凭证匹配器 添加凭证匹配器实现md5加密校验. 修改applicationContext-shiro.xml: <!-- realm --> <bean id="customRealm" class="com.lhx.ssm.shiro.CustomRealm"> <!-- 将凭证匹配器设置到realm中,realm按照凭证匹配器的要求进行散列 --> <property name="creden