【问题标题】:Web site using backbone for frontend and nodejs for backend网站使用主干作为前端,使用 nodejs 作为后端
【发布时间】:2012-05-14 05:18:47
【问题描述】:

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

我现在的问题:

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

【问题讨论】:

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


    【解决方案1】:

    Passport 是解决难题的一个选项。我是开发者,如果您使用它,请随时问我。

    【讨论】:

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

    【讨论】:

      【解决方案3】:

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

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

      希望能帮到你! :)

      【讨论】:

        猜你喜欢
        • 2022-06-19
        • 2018-06-26
        • 2018-08-30
        • 1970-01-01
        • 2020-08-27
        • 2014-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多