在项目中使用node写接口,在写登录功能的时候,有一个验证码登录,写了一个生成验证码的接口,登录思路是:前端这边将用户名,密码和验证码传过来,后端生成的验证码存在session里面,请求过来就去session里面查验证码是否正确
因为登录功能还没有写好,所以现在postman里面测接口,但是出现了问题:
验证码正确的情况下也是一直显示验证码不正确,把session打印出来发现并没有存入的验证码,在网上搜索后,有人说是express跨域导致session丢失的问题,但是修改跨域后仍然无法解决问题,在和公司的后端讨论一番后发现了问题所在:
前端在每次请求是会把cookie带上,因为http是无状态的,不同用户登录所携带的cookie也是不一样的,而在postman测的时候所携带的cookie无法和后端的session对应上,必须要在浏览器端进行测试。
router.post('/login',(req,res)=> {
let { username, password,captcha } = req.body
const result = userLogin(username,password)
// console.log(captcha)
// console.log(req.session)
if(captcha === req.session.captcha){
result.then(data=> {
if(data.username){
res.send({code:200,msg:'登录成功'})
}else{
res.send({code:-1,msg:'登录失败'})
}
})
}else{
res.send({code:-2,msg:'验证码不正确'})
}
})