当这段代码执行重定向操作时,会抛出“无法在发送后设置标头”的错误,并且不会重定向。我承认自己没有完全理解标头以及Express如何使用它们。关于此错误的此链接有点令我困惑,可能是因为我对正在发生的事情缺乏基本的了解。此外,我知道这种身份验证方法有点幼稚,但我只是想让基本的东西工作。
app.post('/api/login', function(req, res) {
if (req.body.password === auth.password) {
auth.date = new Date()
res.redirect('/admin')
} else {
console.log("wrong pw")
}
})
更新:感谢@Brendan Ashworth指出了一个明显的else问题,我已经添加了该语句,不再出现错误。
然而,这一行并没有改变我的页面内容。
res.sendfile('./public/admin/views/tunes.html')
在加上身份验证检查之前,它是有效的。
var auth = require('../config/auth')
module.exports = function(app) {
/*
* CONTENT API
*/
//...
/*
* Admin Routes
*/
app.get('/admin/login', function(req, res) {
res.sendfile('./public/admin/views/login.html')
})
app.post('/api/login', function(req, res) {
if (req.body.password === auth.password) {
auth.date = new Date()
res.redirect('/admin')
} else {
res.json({message: 'Wrong password!'})
}
})
app.get('/admin', function(req, res) {
if (auth.date) {
res.sendfile('./public/admin/views/tunes.html')
console.log("test") //
} else { //added else
res.redirect('/admin/login')
}
})
app.get('/admin/:url', function(req, res) {
if (auth.date) {
res.sendfile('./public/admin/views/' + req.params.url + '.html')
} else { //added else
res.redirect('/admin/login')
}
})
// frontend routes
// route to handle all angular requests
app.get('*', function(req, res) {
res.sendfile('./public/views/index.html')
})
最终更新!我需要处理发送文件后客户端的重定向。现在简单的身份验证已经完美运行!
$http.post('/api/login', $scope.auth).success(function() {
window.location.href = '/admin'
})
res.writeHead()
、res.send()
、res.write()
或类似的方法? - mscdex