后端实现类
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能接收参数
现在我有几个疑问: