我正在为Node / Express站点添加身份验证。我的身份验证是使用护照。身份验证适用于路由,但允许用户猜测网址并直接访问图像/视频/等。没有登录。
我该怎样防止这种情况?我搜索过快递和护照的文件,但没有看到任何解决方案?
答案 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护照