我正在创建一个简单的passport-local
登录应用。
在我成功登录之前,一切似乎都可以正常工作。
具体地说,我需要访问/admin
视图,该视图仅在成功登录后才能看到。
这是我的 routes / index.js文件:
module.exports =函数(应用,护照){
// GET The HOME-page
app.get('/', function(req, res, next) {
res.render('index', {
title: 'Index',
message: 'Index Page'
});
});
// GET The LOGIN-page
app.get('/login', function(req, res, next) {
res.render('login', {
title: 'Login',
message: 'Login Page',
flash_message: req.flash('loginMessage')
});
});
// Process the login form
app.post('/login', passport.authenticate('local', {
successRedirect: '/admin',
failureRedirect: '/login',
failureFlash: true
}),
function (req, res) {
console.log('Hi');
res.redirect('/');
});
app.get('/admin', isLoggedIn, function (req, res) {
res.render('/admin', { <-ERROR IS POINTED HERE
title: 'Admin',
message: 'Admin page'
});
});
app.get('/logout', function (req, res) {
req.logout();
res.redirect('/');
});
};
// route middleware
function isLoggedIn(req, res, next) {
if (req.isAuthenticated()) { return next(); } <-ERROR IS POINTED HERE
res.status(403).send('[403] Forbidden');
}
我console.logged
req.isAuthenticated
省略了什么,但它省略了true,因此它应该返回next()
。该页面当然会提供500个代码,因此不会调用403。
我将管理路由更改为没有isLoggedIn
的另一页,并且可以正常工作,因此我的文件夹结构设置正确。
因此, isLoggedIn 函数搞砸了吗?但是,为什么,为什么会显示无法查找,我不太了解。
答案 0 :(得分:0)
因此,在进行一些调试之后,我发现这只是一个简单的/错误。
app.get('/admin', isLoggedIn ,function (req, res) {
res.render('/admin', {
title: req.user,
message: 'Admin page'
});
});
res.render('/admin');
必须更改为res.render('admin');
因此,我可以得出结论,res.render()
必须按名称查找。
app.get('/admin')
设置路线,简而言之