用护照保护静态文件夹

时间:2017-05-22 00:25:31

标签: angularjs node.js express passport.js

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

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');
});

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

注意:我对护照很新,而不是快递/ nodejs专家。

1 个答案:

答案 0 :(得分:0)

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



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