【问题标题】:Protect static folder with passport用护照保护静态文件夹
【发布时间】:2017-05-22 11:00:21
【问题描述】:

我有一个带有一堆文件(js、html、css)的 angular 应用程序和一个带有护照身份验证的 nodejs 应用程序。 我想做以下事情: 1:如果我访问我的网站,我想看到一个登录页面(我实际上是) 2:当我成功登录时,我想被重定向到我的 Angular 应用程序 3:没有身份验证,我希望我的每个角度资源(imgs、jsons 等)都无法访问。 到目前为止,我可以将我的应用程序放到一个文件夹中,将其设置为静态,将 ensureAuthenticated 中间件(在任何其他情况下成功检测到我是否已登录)传递给它,但是当我在试图访问该静态文件夹。一些示例代码:

function ensureAuthenticated(req, res, next){
    if(req.isAuthenticated()){
        return next();
    } else {
        //req.flash('error_msg','You are not logged in');
        res.redirect('/users/login');
    }
}

app.use('/app', ensureAuthenticated);
app.use('/app', express.static(path.join(__dirname, 'app')));

router.get('/users/login', function(req, res){
    res.render('login');
});
router.post('/users/login',
  passport.authenticate('local', {successRedirect:'/', failureRedirect:'/users/login',failureFlash: true}),
  function(req, res) {
    res.redirect('/');
  });

router.get('/', ensureAuthenticated, function(req, res){
    res.redirect('/app');
});

如果我遗漏了一些明显的东西,请告诉我,或者如果我完全走错了路,请给我一些解决方案! 谢谢大家!

注意:我对护照相当陌生,无论如何都不是 express/nodejs 专家。

【问题讨论】:

    标签: angularjs node.js express passport.js


    【解决方案1】:

    我对护照不太了解,但我认为您可以为静态路径创建中间件

    app.get('/*', function (req, res, next) {
      console.log('middleware');
      next();
    });
    app.use(express.static(path.join(__dirname, 'public')));

    【讨论】:

      猜你喜欢
      • 2014-02-15
      • 1970-01-01
      • 2014-12-16
      • 2016-02-02
      • 1970-01-01
      • 2020-05-29
      • 2021-05-20
      • 2022-08-17
      • 1970-01-01
      相关资源
      最近更新 更多