Egi*_*idi 1 javascript node.js express
我正在使用node-login模块登录我的网站.好的,在用户登录后我渲染了我的dashboard.html网站:
app.get('/', function(req, res){
// check if the user's credentials are saved in a cookie //
if (req.cookies.user == undefined || req.cookies.pass == undefined){
res.render(req.locale+'/login', { title: 'Hello - Please Login To Your Account' });
} else{
// attempt automatic login //
AM.autoLogin(req.cookies.user, req.cookies.pass, function(o){
if (o != null){
req.session.user = o;
res.redirect('/home');
} else{
res.render('/login', { title: 'Hello - Please Login To Your Account' });
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
之后,所有其他html网站都在dashboard.html中链接,因此没有其他app.get方法被调用.
如果用户尝试导航到http://www.example.com/news.html(或任何其他不是登录页面的html页面),如果用户未登录,我需要将他重定向到登录页.
我首先想到的是这样的,但我不知道这是否可能:
app.get('I-don't-know-what-to-insert-here', function(req, res) {
if (req.session.user == null){
// if user is not logged-in redirect back to login page //
res.redirect('/');
} else{
res.redirect('redirect-here-to-the-requested-html-page')
}
});
Run Code Online (Sandbox Code Playgroud)
问候,
您想编写中间件,而不是路由处理程序:
app.use(function(req, res, next) {
if (req.session.user == null){
// if user is not logged-in redirect back to login page //
res.redirect('/');
} else{
next();
}
});
Run Code Online (Sandbox Code Playgroud)