Cookie未设置 - Superagent

时间:2018-01-12 18:24:42

标签: node.js reactjs express cookies superagent

我正在使用superagent在API上发出POST请求,这基本上是一个签署令牌并设置cookie的登录api。

反应请求的代码如下

     agent
        .post('http://localhost:3010/api/auth/login')
        .send({username:this.state.username,password:this.state.password})      
        .end((err,res)=>{
            if(err) console.log(err);
            if(res.body.auth===true){
                alert("Successful Login , You'll be Redirected");
                history.push('/dashboard');
            }
            });

在我的快递服务器中,我正在使用此代码:

router.post('/login', function(req, res) {
  User.findOne({ username: req.body.username }, function (err, user) {

if (err) return res.status(500).send('Error on the server.');
if (!user) return res.status(404).send('No user found.');

var passwordIsValid = bcrypt.compareSync(req.body.password, user.password);
if (!passwordIsValid) return res.status(401).send({ auth: false, token: null });
var token = jwt.sign({ id: user._id, role : user.role }, config.secret, {
  expiresIn: 86400 // expires in 24 hours
});
res.cookie('auth',token);
res.status(200).send({ auth: true, token: token });

  });
});

我在响应中设置了cookie,但问题是cookie从未在浏览器中设置。 当我使用POSTMAN来检查APIS时,问题不是这样,但是在真正的浏览器中使用apis时会出现问题。

我哪里错了?或者我应该使用什么Else方法来实现结果

1 个答案:

答案 0 :(得分:0)

我相信您将令牌作为请求的一部分发送回客户端,可通过响应对象上的cookie属性访问。不将cookie存储在浏览器cookie jar中。为此,您需要查找cookie作为superagent响应回调的一部分,然后使用localstorage客户端保存cookie。