获取不到Session中的数据

 以我的代码来梳理

首先,在这段代码中我存入加密后的数据

//获取验证码图片
    @GetMapping("/getCode")
    public R getCode(HttpSession session) {
        //生成一个包含四位随机数字与字母组合的图片验证码对象
        ValidateCodeUtil.Validate randomCode = ValidateCodeUtil.getRandomCode();
        //从生成的图片对象中提取其实际验证码值,通过调用randomCode.getValue().toLowerCase()方法,将其中的所有字母字符转化为小写形式
        String lowerCase = randomCode.getValue().toLowerCase();
        //对值进行MD5加密
        String md5 = MD5Util.encryptMD5(lowerCase);
        //将加密后的验证码值保存于HttpSession的session域中。
        session.setAttribute("validate", md5);

        return R.ok().entity(randomCode.getBase64Str());
    }

之后,在sendCode请求中来获取session中的"validate"的值。

我的问题是在这里获取不到session中的值,下面是解决方法:

//发送短信验证码
    @GetMapping("/sendCode")
    public R sendCode(@RequestParam("phone") String phone,@RequestParam(value = "code") String code,HttpSession session) {

        String validate;
        //从session中获取验证码
        validate = (String) session.getAttribute("validate");
        //获取用户传入的验证码
        String lowerCase = code.toLowerCase();
        //进行加密
        String md5 = MD5Util.encryptMD5(lowerCase);
        if (StringUtils.isEmpty(validate)){
            //session没有验证码
            throw new WillException(E.USER_CODE_N61);
        }

        if (!validate.equals(md5)){
            //验证码不同
            throw new WillException(E.USER_CODE_N77);
        }
        String[] codeGenerate = {CodeUtil.generateCode(4)};
        String encryptMD5 = MD5Util.encryptMD5(codeGenerate[0]);

        redisTemplate.opsForValue().set(phone, encryptMD5, 120, TimeUnit.SECONDS);
        return R.ok().entity(codeGenerate[0]);
    }

 这边先设置断点,查看数据是否存入。

 通过调试可以看到key为validate的值已经存入session

但问题是获取不到session中的值

 

下面开始解决问题: 把下图session中的id值复制(session标识)

 

将id粘贴在Apipost中的Cookie管理器的JSESSIONID下,

这一步是将请求绑定在同一会话中,这样下次访问时,

会根据session的id标识拿到这个session中的数据。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值