节点应用程序和文件存储

时间:2015-06-05 06:44:54

标签: node.js express amazon-s3 passport.js web-frameworks

这是我的问题:

我有一个负责用户身份验证的Node Web应用程序。用户成功登录后,将显示一个包含文件安全链接的个性化页面。这是我的文件结构。

File Structure

secure/是托管我的文件的地方

应用程序本身只有7mb左右。

这些用户的文件大约是600mb

我有两个很高级别的问题要问。

  1. 我应该使用express.js吗?我有一种感觉Node.js在这种情况下没有发光,我在寻找更复杂的用户身份验证(用户组/角色)的教程时遇到了很多困难。回报率

  2. 我的文件应该位于应用程序之外吗?在数据库中? s3桶?目前我已经建立了一个静态路由到位于名为secure的应用程序目录中的文件夹,然后我有一些中间件检查所有对secure/的请求并检查用户是否被授权(参见代码如下)。我问这个,因为我对Elastic Beanstalk的上传限制为512mb

    app.all('/ secure / *',function(req,res,next){   if(req.isAuthenticated()){     下一个(); //允许下一个路线运行   } else {     //要求用户登录     res.redirect( “/”);   } }); app.use('/ secure',express.static(config.root +'/ secure'));

  3. 即使有人能为我提供一些非常棒的资源!感谢

1 个答案:

答案 0 :(得分:1)

  1. Express.js与RoR或其他任何东西一样好。没有进一步的评论。
  2. 是的,绝对的。您的文件必须位于应用程序之外。在几乎所有需要持久存储的场景中,最好使用持久且可靠的存储解决方案,例如S3。并且,将安全文件与应用程序代码一起发送并不是一个好主意。对于弹性beanstalk,为服务应用程序而启动的EC2实例没有持久的本地存储,因此在实例终止时,您的数据将丢失。除此之外,您将遇到自动缩放问题,其中一个实例无法访问另一个实例中的文件。假设您使用的是AWS,我建议您使用S3。您还可以查看AWS的一个新存储解决方案:Elastic File System