• 大小: 3KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-17
  • 语言: 其他
  • 标签: 源码  工具  

资源简介

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

评论

共有 条评论