项目前后端分离, 一开始登录表单不需要显示验证码输入框, 登录失败多次登录表单显示验证码输入框, 前后端怎么交互来控制验证码输入框的显示与否

解决方案 »

  1.   

    每次登录不是都要访问登录接口么,接口中有一个参数是验证码,可填可不填,每次登录失败后,在redis或者session或者数据库中存一个这个账号的绑定次数,失败就加一,返回参数中也加一个字段,比如needCode,默认时false,失败后判断是否到达阈值,是的话返回这个字段为true,提示前端要显示验证码,下次再访问就判断验证码必须存在,应该就可以了,登录成功记得把这个次数清0
      

  2.   

    当返回true的时候,异步调用一下请求验证码的接口不就行了
      

  3.   

    之前设计了一个验证码实现的方案
    设计一个拦截器(springmvc),如果方法上有XX注解,则会根据规则响应需要验证码的通知(code=xxx,key=uuid,redis保存一个key为uuid的验证码),前端有统一处理逻辑,如果code==xxx,会直接访问url  /xxx/{key}获取一张验证码的图片,用户输入的验证码的key和值丢到header里,继续通过拦截器,验证通过则进入方法,失败则继续之前的流程
    拦截器的伪代码if (!xx注解)
    return true;
    if (validateCode(header.key,header.value))
    return true;
    String key = uuid;
    String code = generateCode();
    saveRedis(uuid,code);
    return {"code":xxx,"key":key};
    这样的好处是,业务逻辑和验证码的处理逻辑是解耦的,假如别的接口也需要验证码,比如发送短信之类的,你只需要添加一个注解即可实现功能