在做一个项目的时候,接入了支付宝的支付,在支付成功后,支付宝回调给定的回调地址,回来后登录信息失效了,找了好多资料,没有发现好的解决方法。项目中用的是spring+shiro,后来这样修改
- 在调用支付宝接口前,先拿到session信息,sessioinid存放在redis,同时把sessionid传递给支付宝,放入隐藏参数中,参考文档:
https://docs.open.alipay.com/270/alipay.trade.page.pay
- 在回调地址中,从支付宝隐藏属性参数‘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