支付宝支付成功后session失效

在集成支付宝支付的项目中,支付成功后回调导致session失效,原因为回调为新HTTP请求,生成了新的session。解决办法是在调用支付宝接口前保存sessionID到Redis,并在回调时从支付宝参数取出sessionID恢复session。使用的技术栈包括Spring和Shiro。
摘要由CSDN通过智能技术生成

在做一个项目的时候,接入了支付宝的支付,在支付成功后,支付宝回调给定的回调地址,回来后登录信息失效了,找了好多资料,没有发现好的解决方法。项目中用的是spring+shiro,后来这样修改

  1. 在调用支付宝接口前,先拿到session信息,sessioinid存放在redis,同时把sessionid传递给支付宝,放入隐藏参数中,参考文档:
    https://docs.open.alipay.com/270/alipay.trade.page.pay
  2. 在回调地址中,从支付宝隐藏属性参数‘passback_params’取出sessionid,对应的从redis中找寻该session信息
redis.set("shiro_session_id_ali"+sessionId.toString(), sessionId.toString(), 30*60);//设置失效时间
@Resource
MemorySessionDAO dao; 
String sessionid = new String(params.get("passback_params").getBytes("ISO-8859-1"),"UTF-8");
		
		String redisSessionId = redis.get("shiro_session_id_ali"+sessionid).toString();
		
		if(!StringU
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值