我想在NodeJS和Express後端腳本上使用Passport實現用戶重定向。我現在面臨的問題是,我的登錄頁面是不是我的默認主頁,但它是相當的:NodeJS護照重定向
localhost:3000/login
我已經成功地讓這個如果用戶沒有註冊,他不能訪問其他網頁,例如作爲/index
或/dashboard
但有些事,當我嘗試訪問硬編碼的網址,如突破:
如果我進入localhost:3000/
我可以訪問即使我沒有登錄默認index.html
頁面只是爲了澄清 - localhost:3000/index
。 == localhost:3000
。
如果我決定來操作這樣的路線:localhost:3000/Example/pages/index.html
或localhost:3000/Example/pages/dashboard.html
它會允許我訪問頁面,即使我在我登錄
我的問題是,我怎麼能限制用戶操作的路線。默認主頁和其他沒有在Node後端聲明的頁面?
我的節點路由代碼:
app.get('/login',
function(req, res){
res.sendFile(path.join(__dirname + '/login.html'));
});
app.get('/index', isLoggedIn,
function(req, res){
res.sendFile(path.join(__dirname + '/index.html'));
});
app.post('/login',
passport.authenticate('local', { failureRedirect: '/login' }),
function(req, res) {
res.redirect('/index');
});
app.post('/login',
passport.authenticate('local', { failureRedirect: '/login' }),
function(req, res) {
res.redirect('/index');
});
我已經使用這個嘗試:
app.use(function(req, res, next) {
if (req.session.user == undefined) {
return res.render('/login', { failureRedirect:'/login' });
}
else {
next();
}
});
但是我收到一個錯誤:沒有默認引擎指定並沒有提供擴展。我不想使用JADE或Handlebars或其他任何引擎,只是靜態的HTML。
我怎樣才能限制的路由操作,而不必定義我的節點頁面的其餘部分爲app.get(/something, function(req,res){});
如果我只是''/''而不是'''/ someroute''或讓它爲空?它仍然可以用於靜態文件嗎? – coderJoe
不管路線是什麼,你可以使用任何你想要的。這裏的想法是中間件是認證的。 –
不工作Vanka。我仍然可以訪問默認主頁和操縱路線.. – coderJoe