网站使用骨干为前端和nodejs为后端

时间:2012-05-12 11:45:38

标签: javascript security node.js backbone.js express

我正在开发一个新的网站,它将是一个带有一些对话框/模态窗口的单页面应用程序。我想使用骨干作为前端。这将使用ajax / websockets调用后端 并使用模板渲染生成的json。
作为后端,我将使用nodejs express app,它将返回客户端所需的json,它将是某种api。这不会使用服务器端视图 客户将使用facebook,twitter等进行身份验证,也可以使用自定义注册表 客户端静态资源(如css,js和html文件)将由nginx处理(稍后是CDN)。

我现在的问题:

  • 如何确定给定用户是否有权在api中执行某些操作(即删除建筑物,创建新建筑物)?这是授权问题,我想在用户登录时给予他们一个角色,并根据它确定他们的权利。这会有用吗?
  • 与上述问题类似,基于角色的安全性是否足以保护API?或者我需要添加令牌或请求签名?
  • 这种架构是否可接受,或者我是否过度工程化并使其复杂化?

3 个答案:

答案 0 :(得分:3)

Passport是拼图认证的一个选项。我是开发人员,如果你使用它,请随时问我任何问题。

答案 1 :(得分:0)

  • 我想在用户登录时给予他们一个角色,并根据它确定他们的权利。这会有用吗?
    • 是的,这将有效。从服务器获取用户后,您可以检查用户的某个角色。然后,您可以根据此角色显示不同的UI元素。
  • 这个基于角色的安全性是否足以保护API?或者我需要添加令牌或请求签名?
    • 这不够。任何人都可以跳到控制台并设置user.admin = true之类的东西。在您的API中,您需要从请求中验证用户令牌,确保相关用户具有相应的权限。
  • 这种架构是可接受的还是我的工程设计并使其复杂化?
    • 至少你应该有一个API验证层。这将是一个足够好的开始,并不会过度工程。

答案 2 :(得分:0)

对于问题的身份验证部分,我会使用everyauth这是connect / express的身份验证中间件。它几乎支持所有oauth-social-network-thingie。

对于角色管理,您可以尝试node-roles。我自己没有使用它,但它应该帮助你,因为它检查服务器端的角色。当然,只有在node.js中实现API时,这才有用。如果情况并非如此,则必须通过node.js应用程序“代理”API调用。

我希望我能帮到你! :)