vue spring,前端登录提交后验证码一直错误,swagger提交验证反而可以成功?

 后端实现类

 public RespBean login(String username, String password,String code, HttpServletRequest request) {
        String captcha = (String) request.getSession().getAttribute("captcha");
        if (StringUtils.isBlank(code) || !captcha.equalsIgnoreCase(code)){
            return RespBean.error("验证码输入错误,请重新输入!");
        }
        //登录
        UserDetails userDetails = userDetailsService.loadUserByUsername(username);
        if (null == userDetails || !passwordEncoder.matches(password,userDetails.getPassword())){
            return RespBean.error("用户名或密码不正确");
        }
        if (!userDetails.isEnabled()){
            return RespBean.error("账号被禁用,请联系管理员");
        }
        //更新security登录用户对象
        UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(userDetails,null,userDetails.getAuthorities());
        SecurityContextHolder.getContext().setAuthentication(authenticationToken);


        //生成token
        String token = jwtTokenUtils.generateToken(userDetails);
        Map<String,String>tokenMap = new HashMap<>();
        tokenMap.put("token",token);
        tokenMap.put("tokenHead",tokenHead);
        return RespBean.success("登陆成功",tokenMap);
    }

前端请求:

 

vue那边不是有个未定义的错误码,你network 看下请求有没有到后天,看下传递的参数对不对,后台也可以打个断点看下

目测我好像遇到过这种问题,你去看一下你用swagger与正常请求时两次请求打开控制台看传参格式,

是不是query string parameters,或者form data,如果不是需要配置一下

再在请求上加一下

具体查:Vue 使用axios 发送post请求,参数格式有错误问题

原本我也觉得是需要用form表单提交的方式,但是你swagger用json竟然能提交,你接口的接收方式看上去又不是接收json数据的

我用axios.post,没有使用封装的函数,调用后端能接收到参数

submitLogin () {
      this.$refs.loginForm.validate((valid) => {
        console.log(this.loginForm);
        if (valid) {
            //postRequest 封装的axios函数
            // postRequest('/login', this.loginForm).then(response => {
            //   alert(JSON.stringify(response));
            //   console.log(JSON.stringify(response));
            // })
          // eslint-disable-next-line no-undef
          axios.post("http://localhost:8081/login",this.loginForm).then(resp => {
            alert(JSON.stringify(resp))
          })
        }
        else {
          this.$message.error('请输入所有字段');
          return false;
        }
      });
    }

后台debug能接收参数

现在我有几个疑问:

  1. 我封装的函数明明可以发送请求,能拿到后端的验证码,而这个/login,就没有反应。
  2. 在使用这个axios.post时必须有// eslint-disable-next-line no-undef注释行才能用其他引用后端都接受不到参数,开始我以为是我引错包了,(我有axios的依赖还有一个axios的插件)我开始逐一的删除排查,发现都没有用只有加了注释这个才能访问到后端接口,希望各位能帮忙解答