javascript - Angular 中的复杂用户权限

标签 javascript angularjs security authentication permissions

我正在尝试隐藏和显示我的 Angular 应用程序的部分(我稍后会担心保护路线)

我遇到的问题是,后端正在返回数据库特定方面的 CRUD 权限。根据这些权限,我应该决定如何隐藏和显示用户界面的元素。然而,从来不存在任何直接的一对一映射。

因此,我需要根据各种权限组合来决定如何显示 UI 的各个部分。例如,“如果他们可以“读取”insertionOrder 或“读取”财务”或“读取”或“创建”拍卖,则显示报告选项卡。

但是,这是一个非常小的示例,通常权限会更长,并且仅适用于应用程序的一个部分。

我知道我要在 ng-show 中调用一个函数,我只是不知道如何组织该函数来解释所有这些用例。

非常感谢任何想法。

以下是返回的权限数组的示例:

{
"account": [
    "read",
    "create",
    "update",
    "delete"
],
"an_advertiser": [
    "read",
    "create",
    "update",
    "delete"
],
"an_insertion_order": [
    "read",
    "create",
    "update",
    "delete"
],
"auction": [
    "read",
    "create",
    "update",
    "delete"
],
"dashboard": [
    "read",
    "create",
    "update",
    "delete"
],
"finance": [
    "read",
    "create",
    "update",
    "delete"
],
"input_output": [
    "read",
    "create",
    "update",
    "delete"
],
"insertion_order": [
    "read",
    "create",
    "update",
    "delete"
],
"publisher": [
    "read",
    "create",
    "update",
    "delete"
],
"report": [
    "read",
    "create",
    "update",
    "delete"
],
"user": [
    "read",
    "create",
    "update",
    "delete"
]
}

最佳答案

如果您选择更改系统的权限,这更像是一个建议。

我认为您必须为权限添加一些层次结构。

我通常使用模块/操作。 所以一个模块可以有很多 Action 。 另外,我没有读取、创建、更新、删除(0:阻止,1:查看,2:可以)。

示例:

{
    user: {
         module: 2,
         create: 2,
         edit: 2,
         name: 2,
         phone: 1,
         delete: 2
    },
    report: {
         module: 1,
         create: 2,
         edit: 0,
         reportA: 1,
         reportB: 2,
         delete: 2
    }
}

这样我就可以完全控制所有操作。模块可以是应用程序的某些部分,具有许多操作。或者您可以使用包含所有组件的大模块,然后使用子模块。

由于我使用整数来表示权限,我可以使用简单的 <>= 进行验证标志。

我通常定义一个通用操作,如 module定义此人是否有权访问整个模块。

function permTo(module, action){
  var mod = list[module];
  // not validating if module exists.
  var max = mod.module;
  return Math.min(mod[action], max);
}

现在有了这个permTo('users', 'phone')会给 1。

现在有了这个permTo('users', 'name')会给 2。

现在有了这个permTo('report', 'create')会给出 1,因为模块是 1。

关于javascript - Angular 中的复杂用户权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24003756/

相关文章:

ruby-on-rails - 基于 Rails 中的用户输入安全地动态调用方法

azure - Azure 高级威胁防护扫描 Blob 时是否可以触发逻辑应用或函数

php - 在php中保护数据库密码

javascript - gmail.user.watch 无法使用 DwD 服务帐户向 PubSub 发送测试消息

javascript - 尝试了解 html GET 和 res.redirect 在 Express 中的工作原理

javascript - 谷歌地图错误(创建标记)

javascript - 如何使用 AngularJS 在选择字段中将预选选项设置为默认选项

javascript - Angular 2 应用程序不加载 html 中的 JS 脚本

javascript - jQuery 间隔在到达最后一个元素后重新启动

javascript - 无法找到 ="ng-binding"所指向的类