Singerw's Repository Singerw's Repository
首页
  • 相关文章

    • HTML相关文章
    • CSS相关文章
    • JavaScript相关文章
  • 学习笔记

    • JavaScript笔记
    • ES6笔记
    • Vue笔记
  • 相关文章

    • Spring相关文章
    • SpringBoot相关文章
    • MyBatis相关文章
    • MySQL相关文章
  • 学习笔记

    • SpringBoot笔记
    • Spring笔记
    • MyBatis笔记
    • MySQL笔记
    • JavaWeb笔记
    • JavaCore笔记
  • 学习笔记

    • Linux笔记
    • Git笔记
    • 技术文档
  • 偏门技术

    • GitHub技巧
    • 博客搭建
    • 科学上网
  • 安装教程

    • JDK
    • MySQL
    • Node.js
    • Linux
  • 终身学习
  • 面试人生
  • 心情杂货
  • 生活随笔
  • 归档
  • 标签
GitHub (opens new window)

Singerw

谁能够凭爱意将富士山私有
首页
  • 相关文章

    • HTML相关文章
    • CSS相关文章
    • JavaScript相关文章
  • 学习笔记

    • JavaScript笔记
    • ES6笔记
    • Vue笔记
  • 相关文章

    • Spring相关文章
    • SpringBoot相关文章
    • MyBatis相关文章
    • MySQL相关文章
  • 学习笔记

    • SpringBoot笔记
    • Spring笔记
    • MyBatis笔记
    • MySQL笔记
    • JavaWeb笔记
    • JavaCore笔记
  • 学习笔记

    • Linux笔记
    • Git笔记
    • 技术文档
  • 偏门技术

    • GitHub技巧
    • 博客搭建
    • 科学上网
  • 安装教程

    • JDK
    • MySQL
    • Node.js
    • Linux
  • 终身学习
  • 面试人生
  • 心情杂货
  • 生活随笔
  • 归档
  • 标签
GitHub (opens new window)
  • Spring

  • SpringMVC

  • SSM整合

    • 《SSM整合》学习笔记
    • SSM整合前提准备
    • Spring整合Mybatis
    • Spring整合SpringMVC
    • SSM整合配置文件示例
    • 判断用户是否登录展示不同页面
    • Session丢失问题与Cookie的添加
      • 一、网页版支付宝沙箱开发支付成功同步回调session丢失问题与解决办法
        • 问题:支付宝沙箱同步回调sessio对象中的数据丢失
        • 解决问题:
      • 二、Cookie的添加方式
  • 《Spring》学习笔记
  • SSM整合
Singerw
2021-09-25

Session丢失问题与Cookie的添加

# Session丢失问题与Cookie的添加方式

# 一、网页版支付宝沙箱开发支付成功同步回调session丢失问题与解决办法

​ 用了半天时间解决支付宝异步回调session丢失问题,今天就继续为沙箱支付成功后同步回调session对象中的数据丢失问题发愁,真是忙活了一天,网上都翻烂了,就那些问题,没有什么实质性答案去解决这个问题,为此,浪费了一天的时间,慢慢发现,第一次做支付宝对接网页的项目,没想到我碰到的问题都是大多数人没有碰到的,真是够”幸运的“。好了废话不多说,回归正题:

# 问题:支付宝沙箱同步回调sessio对象中的数据丢失

# 解决问题:

首先我是用的本地地址去运行的该项目 这是我的本地项目地址,http://localhost:8080/front

运行上面这个链接到了首页,就进行一些操作,一切都很顺利,但是到了付款成功过的页面的时候,自动跳回的两个页面后,就到了处理同步回调的页面、同步处理页面此时的地址是:

1:===>https://excashier.alipaydev.com/standard/auth.htm?payOrderId=84ff625ca7e04d3e8af2029d0c74f220.00

2:===>https://cashier.alipaydev.com/standard/lightpay/lightPayCashier.htm?orderId=0910aa02f7f76f1dee0000-2-2NN9210&bizIdentity=trade20001&outBizNo=2021091022001479210501505049&timeStamp=1631204747701&country=CN

3:===>https://unitradeprod.alipaydev.com/acq/cashierReturn.htm?sign=K1iSL19gsMALQHhxuH4L0zpksY22zJSWW2UuVBF3e2mUcslzs4XVXInBdRqm0EoajO4KXLuppJ0VUr2BDt7eTmOUv%252BL8Rw%253D%253D&outTradeNo=JFH_913e2092ab144d77bcf2cd38a74ba04a&pid=2088621956261714&type=1

4:===>http://127.0.0.1:8080/alipay/success.html

支付宝规定同步回调需要用内网穿透,所以,同步回调回来的链接和刚刚运行的项目的链接不一样,而且在刚刚运行项目将用户信息保存到网址为http://localhost:8080/front/的session域中,同步回调回来的session域不包含用户信息,以至于,会觉得原session信息丢失,不知道去了哪里。

原因分析完了,根据原因,我们要保证这个链接要保证全部在同一个链接下运行才可以,所以项目一上来运行就用该用内网穿透网址+项目名去登录用户信息,这样session域中会一直保存着用户信息,则一开始就使用如下地址访问项目工程:

http://127.0.0.1:8080/front

运行该项目,一直到支付完毕,同步回调回来的的网址也是内网穿透的网址,保证session不会丢失,一定不要一边使用本地链接运行本地项目,一边同步回调拿到的链接是内网穿透的链接,两个链接根本不在同一频道上,session 能一样才怪,好了上面就是问题和解决办法。

# 二、Cookie的添加方式

request.getSession().setAttribute("phonenumber", phonenumber);
request.getSession().setAttribute("password", MD5Util.getMd5(password));

Cookie phonenumberCookie = new Cookie("phonenumber", phonenumber);
Cookie passwordCookie = new Cookie("password", MD5Util.getMd5(password));

phonenumberCookie.setMaxAge(60 * 60 * 24);
passwordCookie.setMaxAge(60 * 60 * 24 * 7);
// 设置路径,很重要,这次就是在这里吃了亏。
phonenumberCookie.setPath("/");
passwordCookie.setPath("/");
response.addCookie(phonenumberCookie);
response.addCookie(passwordCookie);
1
2
3
4
5
6
7
8
9
10
11
12
13
编辑 (opens new window)
#SSM整合
判断用户是否登录展示不同页面

← 判断用户是否登录展示不同页面

最近更新
01
Maven资源导出问题终极版
10-12
02
《MyBatis-Plus》学习笔记
10-07
03
MyBatis-Plus—配置日志
10-07
更多文章>
Theme by Vdoing | Copyright © 2020-2021 版权所有 | repository.singerw.com
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×