Express4.js -路由只有当有一个活动的passport.js会话

Express4.js - route only if there is an active passport.js session

本文关键字:js 活动 会话 有一个 passport 路由 Express4      更新时间:2023-09-26

我使用passport.js和express4.js。我想知道是否有一种自动的方法来验证客户端是否在他试图访问视图时打开了一个带有passport.js的会话?

实际上我这样做是为了验证客户端是否可以访问url:

router.get('/[0-9]{3}/', function(req, res, next){
    var path_codecs = req.originalUrl.split('/')[2];
    if (!req.user) {
        res.redirect('/login');
    } 
    if (req.user.dataValues.codecs !== path_codecs) {
        next();
    }
    res.render('decoupage')
});

我是否必须在我想要限制会话用户的每个视图上进行此验证,或者是否有更自动的方法来定义哪些视图可以访问,哪些不能访问?

您可以使用req.user (Passport将在成功验证后设置该值)。

我通常在瘦中间件中这样使用:

function isAuthenticatedMiddleware (req, res, next) {
  if (req.user) { return next(); }
  next('AuthenticationError');
}
router.get('/[0-9]{3}/', isAuthenticatedMiddleware, function(req, res, next){

你可以很容易地将它添加到路由器上的所有路由中,并使用express的router.all

router.all('*', isAuthenticatedMiddleware);