核心行为
开启Session校验调度任务、校验所有的session、具体的Session自我校验、关闭Session校验调度任务
核心类
ValidatingSessionManager、SessionValidationScheduler、ValidatingSession
ValidatingSessionManager的行为
public interface ValidatingSessionManager extends SessionManager { // 校验所有的Session void validateSessions(); }
SessionValidationScheduler的行为
public interface SessionValidationScheduler { // Session校验是否处于开启状态 boolean isEnabled(); // 开启Session校验 void enableSessionValidation(); // 关闭Session校验 void disableSessionValidation(); }
ValidatingSession的行为
public interface ValidatingSession extends Session { // 校验是否处于开启状态 boolean isValid(); // Session自我校验 void validate() throws InvalidSessionException; }
校验过程解析
ValidatingSessionManager开启Session校验调度任务 ==》 Session校验调度任务中使用ValidatingSessionManager校验所有的Session
==》 ValidatingSessionManager让其子类获得所有的Session(基础Session) ==》 各个基础Session自我校验
ValidatingSessionManager开启Session校验调度任务
protected SessionValidationScheduler sessionValidationScheduler; public void setSessionValidationScheduler(SessionValidationScheduler sessionValidationScheduler) { this.sessionValidationScheduler = sessionValidationScheduler; } protected synchronized void enableSessionValidation() { SessionValidationScheduler scheduler = getSessionValidationScheduler(); if (scheduler == null) { scheduler = createSessionValidationScheduler(); setSessionValidationScheduler(scheduler); } if (!scheduler.isEnabled()) { if (log.isInfoEnabled()) { log.info("Enabling session validation scheduler..."); } //

本文详细探讨了Apache Shiro框架中Session过期校验的设计概念,包括核心行为如开启和关闭Session校验调度任务,核心类如ValidatingSessionManager、SessionValidationScheduler和ValidatingSession的角色和行为,以及Session校验的具体过程。当Session过期时,SimpleSession会抛出异常,由AbstractValidatingSessionManager进行处理。
最低0.47元/天 解锁文章

2万+

被折叠的 条评论
为什么被折叠?



