【问题标题】:JS(Angular) Front-End user privileges with PHP + MySQL Back-End具有 PHP + MySQL 后端的 JS(Angular) 前端用户权限
【发布时间】:2013-11-03 15:28:02
【问题描述】:

我目前正在构建一个复杂的基于 AngularJS 的前端网站。 后端由 PHP 和 MySQL 提供支持。

我有 2 个问题,都是关于用户权限的。

  1. 您将如何设计用于存储用户权限的数据库模式? 将来我想添加预定义的权限(几组)并将它们用作免费/高级帐户类型。

  2. 您将如何在前端管理这些权限? 您什么时候获取/重新获取权限? 您将如何检查每种需要权限的方法?

我正在寻找一种智能解决方案,它不会限制我可以定义的权限数量,但如果未定义任何内容,也会提供一组默认的基本权限。

关于 SQL 实现
特权应适用于特定公司的所有用户。
db 架构是这样的:

  • 公司(company_id 等)
  • 用户(user_id、company_id 等)

据我了解,权限架构应如下所示:

  • 权限(prev_id, prev_name)
  • companies_privileges(company_id, prev_id)

用户权限处理
当用户登录公司时,权限存储在 cookie/session/前端服务中。

为了在前端进行验证,我使用了一个指令,将当前用户权限与所需权限进行比较:

需要数据权限=1 用户=1

至于后端部分,我目前正在向服务器发送每个请求的用户令牌。 此令牌已针对数据库进行验证。 我可以使用它来获取用户权限并存储它们,而不是检查用户是否可以访问/使用某个功能。

除了添加真/假权限之外,我还需要支持数字权限,
例如:限制某个列表中可查看项目的数量。

我想对了吗? 我错过了什么吗?

要求
- 每个公司的无限权限
- 默认权限应适用于所有公司

【问题讨论】:

  • 没有信息可以帮助我们回答 2 个问题。
  • 对不起,我打错了提交。
  • github 上的许多角度 auth 指令......看看它们是如何设置的应该会有所帮助。也检查这个目录ngmodules.org
  • 您介意澄清一下这些权限是什么吗?用例和细节在这里真的很有价值。你想解决什么问题?

标签: php mysql angularjs privileges


【解决方案1】:

快速回答:

  1. 我设计并实现了一种复杂的特权机制,它是基于角色的、每个对象的动词、具有继承性。它相当强大,是整个系统中众多功能的基础。免费用户和高级用户之间的差异是其中的一项要求,并且得到了完美的解决。所以这是你可能想要遵循的方向。不用说这是服务器端的逻辑。

  2. 那时候还没有 Angular,但一般来说,在 Angular 中,最好做到以下几点: A. 有一个主要暴露单个调用的服务:isAuthorized(privilege-name)。 B. 有一个指令 ("needPrivilege='privilege-name') 使用该服务并根据其布尔结果显示/隐藏/禁用。不用说它使用 isAuthorized。 C. 向使用该服务的路由添加一个逻辑,以限制对 UI 中页面的访问。

那是我的两分钱......

【讨论】:

    【解决方案2】:

    我们在GoDisco 发现可以实施的最佳解决方案实际上非常简单。

    服务器端: 1. 我们构建一个 RESTful API 2. 这个 RESTful API 总是请求 access_key,作为 OAuth 的简单实现 3. 在每个请求中,我们检查用户是否有权访问这些数据,否则返回“401 ACCESS DENIED”

    AngularJS 方面:

    1. 我们构建了一个“身份验证服务”模块
    2. 当用户登录时,我们在系统中缓存了他的角色
    3. 路由器检查
      1. 此服务监听$route$location 服务
      2. 每次路由请求,我们的服务都会检查当前是否记录 用户对请求的路线具有正确的角色。我们只需在路由配置中定义允许的角色。
      3. 如果用户请求不允许的路由,我们会将他的路由更改为我们的错误路由,从而引发错误。
    4. 休止符
      1. 我们选择使用Restangular 模块来处理我们的 RESTful 请求
      2. 使用Restangular,我们可以通过使用promise 的请求来捕获错误。如果我们有任何 401 错误,我们会处理它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多