2

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

我现在有的问题:

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

3 回答 3

3

Passport是解决难题的一个选项。我是开发人员,所以如果您使用它,请随时问我任何问题。

于 2012-05-13T21:18:47.367 回答
0

对于您问题的身份验证部分,我将使用everyauth,它是用于连接/表达的身份验证中间件。它支持几乎所有 oauth-social-network-thingie。

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

我希望我能帮助你!:)

于 2012-05-13T09:41:54.683 回答
0
  • 我想在用户登录时给他们一个角色,并据此确定他们的权限。这行得通吗?
    • 是的,这会起作用。从服务器获取用户后,您可以检查用户的某个角色。然后,您可以根据此角色显示不同的 UI 元素。
  • 这种基于角色的安全性足以保护 api 吗?或者我需要添加令牌或请求签名之类的东西?
    • 这还不够。任何人都可以跳进控制台并设置类似user.admin = true. 在您的 API 中,您需要验证请求中的用户令牌,确保相关用户具有适当的权限。
  • 这种架构是否可以接受,或者我过度设计并使其复杂化?
    • 至少你应该有一个 API 验证层。这将是一个足够好的开始,并且不会过度设计。
于 2012-05-12T16:34:25.613 回答