geo*_*per 1 javascript redirect express
我正在尝试编写用于身份验证的中间件。我希望这个 if 语句将用户重定向到'/'(如果他们未登录)。如果他们已登录,我不想将他们重定向到“/news”。
/*Simplified for this example*/
if(rs.authenticated === true) {
next();
} else {
res.redirect('/');
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在这些 if 语句中做到这一点?或者我必须写一个新方法?我已经尝试了几种使用 if 语句的方法,但我只是得到重定向循环。
标准模式适用于所有需要登录用户使用中间件的页面,该中间件验证登录用户并在/未登录时重定向。
function loggedIn(req, res, next) {
if(req.authenticated === true) {
next();
} else {
res.redirect('/');
}
}
app.get('/news', loggedIn, newsRoute);
app.get('/', homeRoute);
Run Code Online (Sandbox Code Playgroud)
您的问题是您正在为所有路由使用中间件,而您实际上只想将其用于受保护的路由,这就是重定向循环发生的地方。如果您想将登录用户发送到“/news”而不是“/”,您可以只渲染正确的模板或在其中执行条件重定向。
function homeRoute(req, res) {
if (req.authenticated) {
return res.redirect('/news');
}
res.render('home');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5602 次 |
| 最近记录: |