Login.vue
<template>
<div>
手机号:<input type="text" v-model="loginForm.userphone" placeholder="请输入手机号"/>
<br><br>
密码: <input type="password" v-model="loginForm.userpass" placeholder="请输入密码"/>
<br><br>
<button v-on:click="login">登录</button>
</div>
</template>
<script>
export default {
name: 'Login',
data () {
return {
loginForm: {
userphone: '',
userpass: ''
},
responseResult: []
}
},
methods: {
login () {
this.$axios
.post('/login', {
userphone: this.loginForm.userphone,
userpass: this.loginForm.userpass
})
.then(successResponse => {
if (successResponse.data.code === 200) {
this.$router.replace({path: '/index'})
}
})
.catch(failResponse => {
})
}
}
}
</script>
RequestLoginVo.java
@Getter
@Setter
public class RequestLoginVo {
@JsonProperty(value = "userPhone")
private String userPhone;
@JsonProperty(value = "userPass")
private String userPass;
// private String captcha;
}
UserController.java
@CrossOrigin
@PostMapping(value = "api/login")
@ResponseBody
public Result login(@RequestBody RequestLoginVo requestLoginVo){
System.out.println(requestLoginVo.getUserPhone());
System.out.println(requestLoginVo.getUserPass());
System.out.println(requestLoginVo);
User user=userService.queryByUserPhone(requestLoginVo.getUserPhone());
//用户不存在或密码错误
if(user==null || !user.getUserPass().equals(Md5Utils.hash(requestLoginVo.getUserPass()))){
if(user==null)
System.out.println("user==null");
if(!user.getUserPass().equals(Md5Utils.hash(requestLoginVo.getUserPass())))
System.out.println("wrong pass");
return new Result(400,"失败");
}
Map<String,Object> userMap=new HashMap<>();
userMap.put("userId",user.getUserId());
if(user.getUserType()== Helpless.UserTypeEnum.ORDUSER){
userMap.put("isAdmin",true);
return new Result(200,"成功");
// return Result.getSuccess().setData(userMap);
}else{
userMap.put("isAdmin",false);
return new Result(200,"成功");
// return Result.getSuccess().setData(userMap);
}
}
把RequestLoginVo换成String类型,能输出正确的json格式,RequestLoginVo类型就为null
axios默认带的json格式,你回传的数据有问题。这个全是小写,
这个驼峰命名,映射不到了。
所以应该把前端 userphone改成 userPhone,userpass改成userPass
改成小写:userphone和userpass
抓包看一下 axios发送的类型 是什么 可能是 application/json 而springBoot当做 www-urlencoded解析了 。。
就是content-type的类型
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y