小程序发送请求,java后台struts2的action里面接收不到session储存的值

1,问题:

        最近在做一个微信小程序,有一个功能:注册的时候:java后台生成六位随机数作为验证码,通过手机或者邮箱发送个客户(这个看客户界面选择通过什么方式注册),并把这六位随机数存到session里面 

           ActionContext ac = ActionContext.getContext();
            Map session = ac.getSession();
            session.put("verifiCode",andNum);;

客户收到验证码,前端带着验证码发送请求;这时候后台接受到前端传过来的验证码,同之前存在session进行对比,依次来校验;这是取出session,如下

        String seVerifiCode = (String) ActionContext.getContext().getSession().get("verifiCode");

但是后来打印出来的seVerifiCode的值是为null;

之前都是用这种方式验证的,可以获取到session里面的值。

后来发现是小程序通过wx.request发送的请求,都是产生的session一个新的值,这样跟后台的就不是同一个session啦。

2. 解决办法:

     在java后台产生随机数的时候,获取到session并返回给前端,这样前端每次请求的时候就带这个session;如下

java获取session返回给前端:

            String session_id = ServletActionContext.getRequest().getSession().getId();

            dataMap.put("session_id",session_id);

            rv.setData(dataMap);

前端小程序接受到这个session,设置到header里面:

if (result.CODE == '8888') {

getApp().globalData.header.Cookie = 'JSESSIONID =' + result.data.session_id;

同时前端需要在app.js设置全局的header参数:

globalData: {

header: { 'Cookie': '', 'content-type': 'application/x-www-form-urlencoded'}

},

下次做校验的时候就带着这个有java后台返回的session的头部去请求的,不会发生session不一致的

var header = getApp().globalData.header;

wx.request({

url: 'http://127.0.0.1:8080/utopia/checkVerifiCode.action',

data: {

verifiCode: verifCode

},

header: header,

method: 'POST',

success: function (res) {

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huidoo888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值