zoukankan      html  css  js  c++  java
  • 关于手机短信验证码存session 获取不到的问题

    问题描述:最近做一个项目,手机端注册,服务端产生一个验证码,通过短信发送到手机,并存放到session中,但手机端发送第二次请求传回验证码,要对两个验证码进行比较判断时,session存放的验证码丢失,直接报错 “System.NullReferenceException: 未将对象引用设置到对象的实例。” 
    如果是通过网页测试,session是还在的,但通过手机端就会找不到session 。

     手机端不像浏览器,每次登录后服务器端会建立一个session的回话;手机端请求完成,会话就已经结束了,所以找不到session。
    目前的解决办法:将验证码放到应用上下文里。 
     
                  // 生成验证码
                  String code = "";
                        for (int i = 0; i < 4; i++) {
                            code += (int) (Math.random() * 10);
                        }
                    
                            final ServletContext context = request.getSession().getServletContext();
                            context.setAttribute("register-" + mobile, code);// 把验证码放进应用上下文
                            // 设置验证码有效期为5分钟
                            final Timer timer = new Timer();
                            timer.schedule(new TimerTask() {
                                @Override
                                public void run() {
                                    context.removeAttribute("login-" + mobile);
                                    System.out.println(mobile + "验证码删除成功");
                                    timer.cancel();
                                }
                            }, 5 * 60 * 1000);
                        
  • 相关阅读:
    node中__dirname、__filename、process.cwd()、process.chdir()表示的路径
    formidable模块的使用
    对象函数的readFileSyc类
    nodejs的事件驱动理解
    书籍类
    Cookie的弊端
    Codeforces 1015 E(模拟)
    Codeforces 1015D(贪心)
    牛客网暑期ACM多校训练营(第五场)I(树状数组)
    2018牛客暑假多校第五场 A(二分答案)
  • 原文地址:https://www.cnblogs.com/qiuting/p/6180126.html
Copyright © 2011-2022 走看看