[英]NodeJS 404 Error
我正在嘗試創建一個將檢查用戶憑據的中間件,如果成功,則使用用戶信息創建一個JWT。 我想創建一個cookie,然后將JWT存儲在cookie中,但是我似乎無法使其正常工作。 在發布時點擊登錄方法后,我收到404“未找到”錯誤,說它“無法發布/ authenticate”。 我想念什么?
路線:
app.post('/authenticate', function(req, res, next){
middleware.login(req, res, next);
});
中間件:
exports.login = function(req, res, next){
var username = req.body.username;
var password = req.body.password;
User.findByUsername(username,function(err, user){
if(err){
res.send({ success: false, message: 'Authentication failed.' });
}
if (!user) {
res.send({ success: false, message: 'Authentication failed. User not found.' });
}
if(user && !user.isuserenabled){
res.send({ success: false, message: 'Authentication failed. User not found.' });
}
if (!UserSchema.comparePassword(password,user.user_password )) {
res.send({ success: false, message: 'Authentication failed. User not found.' });
}
res.cookie('yummyCookie', jwt.sign(
//payload, secret, options, [callback]
{
id: user.user_id,
email: user.email,
name: user.firstname + " " + user.lastname,
role: user.role
},
config.secret, // DO NOT KEEP YOUR SECRET IN THE CODE
{expiresIn: "1h"}, {secure: true, httpOnly: true}));
return next();
});
};
收到404 not found
的原因是,您實際上沒有發送任何響應,只是將執行傳遞給下一個處理程序。 由於在該Express返回404之后沒有處理程序被匹配app.post
實際上被調用,但是當您調用next()
它期望另一個中間件來處理請求。 這是一個非常基本的示例,您的路由實際上已被調用,但是執行被傳遞給責任鏈中的下一個中間件。 由於沒有-您會收到錯誤消息。
var express = require('express'); var app = express(); app.post('/test', (req, res, next) => { console.log('called'); next(); }); app.listen(5000);
這會將“ called”寫入控制台,但仍返回404。您可以做的是在成功通過身份驗證后添加另一個處理程序,如下所示:
app.post('/authenticate', (req, res, next) => { res.send('OK').end(); });
或者您可以將該登錄名合並到中間件本身中,而不用調用next()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.