无法在发送后设置标头。Express JS

3

帮帮我:(,我找不到解决我的错误的方法,我尝试在响应之前使用return,但它不起作用。

这是我的代码

function isAuthenticated(req, res, next) {
var getToken = req.cookies.token;
var getUrl = req.originalUrl;
console.log(getToken)    
if(getToken == undefined) {
    res.redirect('/login')
    next()
} else {
    console.log('success')
    next()
}
next() }

router.get('/login', isAuthenticated, auth.login);
router.get('/logout', isAuthenticated, auth.logout);
router.post('/logging', auth.prosesLogin);

2
可能是Error: Can't set headers after they are sent to the client的重复问题。 - ponury-kostek
你有我的代码的解决方案吗? - Subiyantoro
1
else { }if 条件语句中,删除 next()。只有在身份验证成功后(即调用 next())才能重定向到端点。否则,必须重定向到 /login。(这里是 fiddle: https://jsfiddle.net/h0e2hsau/1/ ) - oneturkmen
但是等等,它仍然在循环。GET /auth/logout,我的错误不再显示了,但仍然没有重定向到/auth/login的URL :( - Subiyantoro
@Subiyantoro从GET @ /login端点中删除isAuthenticated。如果用户尚未登录,验证没有意义,对吧? - oneturkmen
显示剩余3条评论
2个回答

4

看起来在您的函数中,函数参数的顺序是错误的。

请将(err, res)更改为(req, res)(err, req, res, next)。希望这可以帮助您。


3

next()替换为return false


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接