一. 请求传的参数名称错误,且没有配置usernameParameter
比如登陆的时候向后端发起请求,用户名的参数名称是name或者nickname,并且没有配置.usernameParameter()的话,后端是获取不到值的。
解决方法
1.将请求参数名改为username
2.在config中配置.usernameParameter(“参数名”)
比如.usernameParameter(“name”)
.usernameParameter(“nickname”)
二. security的config里面设置了.formLogin(),却没有使用表单提交
比如使用axios进行post请求提交。
解决方法
1.改为表单提交
2.伪造表单提交
// 2.1: 转换请求数据格式
let data = this.trans(this.user);
axios.post(url,data,{
// 2.2: 添加这个请求头
headers: {
'Content-Type':'application/x-www-form-urlencoded'
}
})
//转换请求数据格式方法
trans:function(user){
let url = "";
for (let k in user) {
let value = user[k] !== undefined ? user[k] : "";
url += `&${k}=${encodeURIComponent(value)}`;
}
return url ? url.substring(1):"";
}

本文介绍了在前后端交互中常见的两个问题:请求参数名错误和非表单提交方式。当登录请求的用户名参数名与后端期望不符,或者使用axios进行非表单提交时,可能会导致数据无法正常传递。解决方案包括修改请求参数名为后端期望的名字,或在axios请求中设置正确的Content-Type和转换请求数据格式为表单提交所需的URL编码格式。
1148





