syso_love
syso_love
2018-10-10 05:47
采纳率: 29.6%
浏览 5.3k
已采纳

小程序 手机号+短信验证码登录问题

场景:
我定义了两个全局静态变量 mobile 和message(短信验证码)
多人同时登录
发送短信验证码是一个接口 会把验证码和手机号赋值给两个静态变量
之后访问登录用这个接口 会验证传过来的手机号 验证码 和静态变量里面的
手机号和验证码

出现的问题:
短信发送成功 但是在登录这个接口中验证手机号的时候 手机号验证不一致

        按理来说 没登录一个人 tomcat会开放不同的线程 (本人对线程没做操作)
        不会出现上述那个问题



        求大佬解答下为什么会出现这个问题
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • east123321
    east123321 2018-10-10 09:14
    已采纳

    Map保存起来 一个手机号对应一个验证码

    点赞 评论
  • weixin_39808420
    世纪怪咖 2018-10-10 06:01

    登陆一个人开放一个线程是什么情况,验证是否匹配的时候,可以把验证码存缓存或者session把,手机号为键,验证吗为值

    点赞 评论
  • falali19880120
    千秋无痕 2018-10-10 06:13

    多人同时登陆,是并发;而你使用全局共享变量,肯定会出现问题的呀;

    a: 发送短信,然后再去登陆的时候,恰巧b已经发送短信结束,会覆盖a的信息,a再去验证的时候,全局变量都是b的信息,当然不一样啊

    tomcat即使有很多线程,但他们公用 全局变量的,可以了解下jvm工作原理,会对你有所帮助

    点赞 评论
  • qq_36060674
    qq_36060674 2018-10-11 10:10

    静态变量是全局共享的,只要有修改,全局都会改变,栈,方法又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。

    点赞 评论

相关推荐