使用快递设置cookie后如何重定向url?

问题描述 投票:0回答:2

这是我在快递路由器中的登录代码:

if (password === realpassword) {
    res.cookie('thecookie', 'somethingliketoken');
    res.redirect(302, '/somepages');
} else {
    res.status(403).end();
}

我想设置cookie,以便/somepages可以识别谁是这个用户。

但我得到错误Error: Can't set headers after they are sent.

我已经尝试过return res.redirect(302, '/somepages');/somepages的查询已正确发送,但页面仍然保留在我的/login

请帮忙。

javascript node.js express cookies login
2个回答
0
投票

我想我得到了理由。我使用AJAX发布了用户名和密码,因此302重定向被发送到AJAX查询,是的,它重定向成功,但它是针对AJAX查询,而不是页面,这就是为什么第二个查询被收到但页面没有更改。

          this.$http({
                url: '/userLogin',
                method: 'post',
                data: {
                    username: this.username,
                    password: SHA3(this.password, {outputLength: 256}).toString(),
                },
            }).then(res => {
                console.log(res);
                this.hintColor = '#00bdd8';
                this.hint = 'success';
            }).catch(err => {
                this.hintColor = 'red';
                if (err.response.status == 403) {
                    this.hint = 'mismatch';
                } else {
                    this.hint = '500err';
                }
            });

我认为不应该像这样使用它。

将使用window.location代替。

如果还有其他方式,我非常感谢您的帮助。


0
投票

我在登录帖子请求中做了类似的事情,并为我工作。

app.post('/index',function(req,res){
  var uname = req.body.Username;
  var pwd = req.body.Password;
  if(uname && pwd === 'admin'){
    var token = jwt.sign( { username: uname }, 'q1W2e3R4t5Y6u7I8o9P',{ expiresIn: '1m' }
      );
    res.cookie('auth',token);
    res.redirect('home');
    console.log('Authentication is done successfully.....');
    console.log(token);
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.