如何使用护照 js 保护命名空间?
How to secure a namespace with passport js?
假设我有一个具有以下命名空间的路由:
app.use('/logged', adminRoute);
现在,我创建了以下 passportjs 函数:
app.get('/logged/panel', function (req, res) {
if (req.user === undefined) {
res.redirect('/login');
} else {
res.render('/logged/panel', {
user: req.user
})
}
});
此函数检查用户是否在 /logged/panel
模式上进行了身份验证。
我想修改此函数,以便它对 adminRoute
中的每个 get/post url 模式执行检查。我怎样才能正确地做到这一点?
考虑使用 express.Router
。
function ensureAuthenticated(req, res, next) {
if(logged) return next();
res.redirect('/login');
}
var loggedRouter = express.Router();
loggedRouter
.use(ensureAuthenticated)
.get('/panel', panelHandler)
.get('/other', otherHandler);
var mainRouter = express.Router();
mainRouter.use('/logged', loggedRouter);
app.use(mainRouter);
您可以在 ensureAuthenticated
函数中包括检查用户是否登录。此中间件函数将始终在 /logged/panel
和 /logged/other
.
之前执行
假设我有一个具有以下命名空间的路由:
app.use('/logged', adminRoute);
现在,我创建了以下 passportjs 函数:
app.get('/logged/panel', function (req, res) {
if (req.user === undefined) {
res.redirect('/login');
} else {
res.render('/logged/panel', {
user: req.user
})
}
});
此函数检查用户是否在 /logged/panel
模式上进行了身份验证。
我想修改此函数,以便它对 adminRoute
中的每个 get/post url 模式执行检查。我怎样才能正确地做到这一点?
考虑使用 express.Router
。
function ensureAuthenticated(req, res, next) {
if(logged) return next();
res.redirect('/login');
}
var loggedRouter = express.Router();
loggedRouter
.use(ensureAuthenticated)
.get('/panel', panelHandler)
.get('/other', otherHandler);
var mainRouter = express.Router();
mainRouter.use('/logged', loggedRouter);
app.use(mainRouter);
您可以在 ensureAuthenticated
函数中包括检查用户是否登录。此中间件函数将始终在 /logged/panel
和 /logged/other
.