使用spring-session管理session时,针对flash上传组件丢失session的问题处理

核心点就是spring-session没有对session在url重写后进行处理。我实现了一个

在applicat-context.xml中,如下配置(只配置了核心的部分代码,不是全部):

   <bean id="redisHttpSessionConfiguration" class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">
        <property name="maxInactiveIntervalInSeconds" value="3600" />
        <property name="httpSessionStrategy" ref="cookieHttpSessionStrategy"/>
    </bean>

    <bean id="customCookieSerializer" class="com.a.b.CustomCookieSerializer">
        <property name="cookieName" value="SESSION"/>
    </bean>
    
    <bean id="cookieHttpSessionStrategy" class="org.springframework.session.web.http.CookieHttpSessionStrategy">
        <property name="cookieSerializer" ref="customCookieSerializer"/>
    </bean>

其中CustomCookieSerializer代码如下(比较简陋,请大家帮忙修正):

public class CustomCookieSerializer extends DefaultCookieSerializer {

	private String cookieName = "SESSION";
	
	@Override
	public void setCookieName(String cookieName) {
		this.cookieName = cookieName;
		super.setCookieName(cookieName);
	}
	
	@Override
	public List<String> readCookieValues(HttpServletRequest request) {
		List<String> cookies = super.readCookieValues(request);
		String reqUri = request.getRequestURI();
		if(reqUri.contains(";"))
		{
			String s = reqUri.substring(reqUri.indexOf(";")+1);
			if(s.contains(this.cookieName))
			{
				String jssionid = s.substring(s.indexOf(this.cookieName) + this.cookieName.length() + 1);
				if(!cookies.contains(jssionid))
					cookies.add(jssionid);
			}
		}
		return cookies;
	}
}

浏览器URL重写session时的调用方式是:http://xxxx/aaa;SESSION=xxxxxxxx

转载于:https://my.oschina.net/wen3062/blog/745098

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值