您如何在Node / Express中使用密码保护静态资产?

时间:2015-07-20 19:29:23

标签: node.js express passport.js

我正在为Node / Express站点添加身份验证。我的身份验证是使用护照。身份验证适用于路由,但允许用户猜测网址并直接访问图像/视频/等。没有登录。

我该怎样防止这种情况?我搜索过快递和护照的文件,但没有看到任何解决方案?

3 个答案:

答案 0 :(得分:1)

只需确保您的身份验证中间件在静态之前添加。当然,这个身份验证中间件应该能够让一些请求通过(比如那些获取登录页面的请求)。

答案 1 :(得分:1)

这类似于@eephillip提供的用于提供私有静态资产/文件的解决方案:Using express.static middleware in an authorized route

他还创建了自己的auth.ensureAuthenticated()处理程序,但它与此基本相同:Documentation for "ensureAuthentication" "isAuthenticated" passport's functions?

答案 2 :(得分:0)

您是否有机会使用Instagram等API? Instagram的护照包括此功能:

function ensureAuthenticated(req,res,next){
  if(req.isAuthenticated()){
    console.log("USER IS AUTHENTICATED");
    return next();
  }
  console.log("USER IS NOT AUTHENTICATED");
  res.redirect('/home');
}

如果在此会话期间未对用户进行身份验证,可以将其放置在路由文件的顶部,以将用户重定向到目标网页(例如/ home)。

可以在此处找到一个示例和更多信息:https://github.com/jaredhanson/passport-instagram/blob/master/examples/login/app.js或谷歌搜索instagram护照