資源簡介
NULL
博文鏈接:https://309593586-qq-com.iteye.com/blog/2415463

代碼片段和文件信息
package?springboot.example;
import?java.io.UnsupportedEncodingException;
import?java.net.URLEncoder;
import?java.util.HashSet;
import?java.util.linkedHashMap;
import?java.util.List;
import?java.util.Map;
import?java.util.Set;
import?java.util.StringTokenizer;
import?java.util.regex.Matcher;
import?java.util.regex.Pattern;
import?javax.servlet.http.HttpServletRequest;
import?javax.servlet.http.HttpServletResponse;
import?javax.servlet.http.HttpServletResponseWrapper;
import?org.springframework.session.Session;
import?org.springframework.session.web.http.CookieSerializer;
import?org.springframework.session.web.http.CookieSerializer.CookieValue;
import?org.springframework.session.web.http.DefaultCookieSerializer;
import?org.springframework.session.web.http.HeaderHttpSessionStrategy;
import?org.springframework.session.web.http.HttpSessionManager;
import?org.springframework.session.web.http.MultiHttpSessionStrategy;
import?org.springframework.util.Assert;
import?org.springframework.util.StringUtils;
/**
?*?綜合了cookie和header策略
?*?@author?TWSW
?*
?*/
public?class?CookieHeaderHttpSessionStrategy??implements?MultiHttpSessionStrategy?HttpSessionManager?{
private?String?headerName?=?“x-auth-token“;
/**
?*?The?default?delimiter?for?both?serialization?and?deserialization.
?*/
private?static?final?String?DEFAULT_DELIMITER?=?“?“;
private?static?final?String?SESSION_IDS_WRITTEN_ATTR?=?CookieHeaderHttpSessionStrategy.class
.getName().concat(“.SESSIONS_WRITTEN_ATTR“);
static?final?String?DEFAULT_ALIAS?=?“0“;
static?final?String?DEFAULT_SESSION_ALIAS_PARAM_NAME?=?“_s“;
private?static?final?Pattern?ALIAS_PATTERN?=?Pattern.compile(“^[\\w-]{150}$“);
private?String?sessionParam?=?DEFAULT_SESSION_ALIAS_PARAM_NAME;
private?CookieSerializer?cookieSerializer?=?new?DefaultCookieSerializer();
/**
?*?The?delimiter?between?a?session?alias?and?a?session?id?when?reading?a?cookie?value.
?*?The?default?value?is?“?“.
?*/
private?String?deserializationDelimiter?=?DEFAULT_DELIMITER;
/**
?*?The?delimiter?between?a?session?alias?and?a?session?id?when?writing?a?cookie?value.
?*?The?default?is?“?“.
?*/
private?String?serializationDelimiter?=?DEFAULT_DELIMITER;
public?void?setHeaderName(String?headerName)?{
Assert.notNull(headerName?“headerName?cannot?be?null“);
this.headerName?=?headerName;
}
public?String?getRequestedSessionId(HttpServletRequest?request)?{
String?authToken?=?request.getHeader(this.headerName);
if(StringUtils.hasText(authToken)){
return?authToken;
}else{
Map?sessionIds?=?getSessionIds(request);
String?sessionAlias?=?getCurrentSessionAlias(request);
String?sessionId=?sessionIds.get(sessionAlias);
return?sessionId;
}
}
public?String?getCurrentSessionAlias(HttpServletRequest?request)?{
if?(this.sessionParam?==?null)?{
return?DEFAULT_ALIAS;
}
String?u?=?request.getParameter(this.sessionParam);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????12288??2018-01-19?15:32??CookieHeaderHttpSessionStrategy.java
評論
共有 條評論