DefaultWebSessionStorageEvaluator类主要定义了属性信息是否能够通过session储存,它继承了DefaultSessionStorageEvaluator类,现对其解析如下:
1.DefaultSessionStorageEvaluator类
可以参考DefaultSessionStorageEvaluator类源码解析,主要定义了属性信息是否能够通过session进行存储的操作。
2.DefaultWebSessionStorageEvaluator类
2.1.数据属性
private SessionManager sessionManager;//会话管理器
2.2.设置会话管理器
void setSessionManager(SessionManager sessionManager) {
this.sessionManager = sessionManager;
}
2.3.判断是否能够通过session进行存储
public boolean isSessionStorageEnabled(Subject subject) {
if (subject.getSession(false) != null) {
//use what already exists
return true;
}
if (!isSessionStorageEnabled()) {
//honor global setting:
return false;
}
//SHIRO-350: non-web subject instances can't be saved to web-only session managers:
//since 1.2.1:
if (!(subject instanceof WebSubject) && (this.sessionManager != null && !(this.sessionManager instanceof NativeSessionManager))) {
return false;
}
return WebUtils._isSessionCreationEnabled(subject);
}