标签: role-based-access-control

如何在 react redux 应用程序中实现基于角色的限制/权限?

我有一个包含多个组件的 React-Redux-KoaJs 应用程序。我的用户角色也很少。现在我想只向特定角色显示几个按钮、表格和 div,而对其他人隐藏它们。请记住,我不想隐藏整个组件,而只是隐藏组件的一部分。谁能帮我?提前致谢。

user-permissions reactjs role-based-access-control react-redux

14
推荐指数
4
解决办法
2万
查看次数

基于分层角色/权限的访问

我想构建一个Hierarchical Role Base访问控制.这是我目前的架构:
在此输入图像描述

目前我有两个选项来构建这个系统:

  1. 将所有必需的权限附加到角色(非分层) 在此输入图像描述

  2. 仅附加特殊的"级别"权限并继承具有较低级别的权限 在此输入图像描述

是否有更好的方法或仅仅取决于我的项目需求?

我只是因为简单而倾向于选择Hierarchical.如果我这样做,有没有更好的方法来选择权限级别,也许使用二进制数字?

选项2会有一些角色级别,我会有一些级别的权限.因此,当我创建Full Administrator角色时,将继承所有其他权限,因为这将是级别4,而其他权限将具有小于级别4(或4000)的数字.

这有点矫枉过正吗?

php mysql permissions hierarchical role-based-access-control

9
推荐指数
1
解决办法
1735
查看次数

如何在AngularJS中处理基于角色的授权?

我正在创建一个Web应用程序,它将满足用户的两个要求.注意:我是AngularJS的新手,是一个Web开发平台.

前端 - 1:它是一种搜索功能,用户可以根据关键字搜索和过滤器搜索特定文档和研究.这是使用MySQL实现的,用于使用AngularJS获取数据和显示.

前端 - 2:用户可以选择在Web应用程序上创建帐户.该帐户的目的是:

  1. 保存他们的搜索查询.
  2. 如果管理员将每个用户与特定角色相关联,那么这些用户将可以访问其他选项,例如修改数据库中存在的文档以及上载新文档和其他页面的主机.

我的问题:

如何在AngularJS中处理基于角色的授权?我无法弄清楚如何创建一个涉及以下功能的框架: - 用户获得与他们相关的角色 - 阻止用户访问与这些角色无关的页面或功能

我已经阅读了很少的SO文章和教程,但每个教程都以作者为例说,基于角色的授权应该在服务器端处理,我理解为什么这是真的.

如果有人能指出我在AngularJS的服务器端实现基于角色的授权的教程或文章,那将是很棒的.

谢谢!

mysql authorization role-based angularjs role-based-access-control

7
推荐指数
1
解决办法
1万
查看次数

Django基于框架组的各个视图的权限

我正在使用DRF编写API.我想为我的Modelviewsets中的每个视图赋予不同的权限.我有两个小组(客户和员工).我在permissions.py中将它们过滤为Isstaff和Iscustomer .

class Iscustomer(permissions.BasePermission):
    def has_permission(self, request, view):
        if request.user and request.user.groups.filter(name='customers'):
            return True
        return False


class Isstaff(permissions.BasePermission):
    def has_permission(self, request, view):
        if request.user and request.user.groups.filter(name='staff'):
            return True
        return False
Run Code Online (Sandbox Code Playgroud)

我试图覆盖使用get_permissions方法.当我放入一个组时self.permission_classes,它工作正常.

class cityviewset(viewsets.ModelViewSet):
    queryset = city.objects.all()
    serializer_class = citySerializer

    def get_permissions(self):    
        if self.request.method == 'POST' or self.request.method == 'DELETE':
            self.permission_classes = [Isstaff]
        return super(cityviewset, self).get_permissions()
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将多个组放入时self.permission_classes,它会失败.

def get_permissions(self):
    if self.request.method == 'POST' or self.request.method == 'DELETE':
        self.permission_classes = [Isstaff,Iscustomer,]
    return super(cityviewset, self).get_permissions()
Run Code Online (Sandbox Code Playgroud)

django permissions django-permissions django-rest-framework role-based-access-control

7
推荐指数
1
解决办法
3946
查看次数

OAuth-2.0/JWT - 关于何时使用作用域和角色的指南

我非常精通与OAuth 2.0 和 JWT 相关的大多数事情,但仍然有点令人困惑的一件事是是否/何时使用作用域与角色。

我认为一些混乱来自基于角色的授权在 ASP.NET Core(这是我工作场所的主要语言/框架)中的工作方式。例如; 如果我在 JWT 中有如下角色

{
  "aud": "test",
  "iss": "http://localhost:8080/auth/realms/test/",
  "iat": 1585192274,
  "nbf": 1585192274,
  "exp": 1585196174,
  "sub": "12345",
  "roles": ["Admin", "SuperUser"]
}
Run Code Online (Sandbox Code Playgroud)

我可以很容易地保护路线,而无需做太多事情,例如:

[ApiController]
[Route("api/v{version:apiVersion}/template/test")]
public class TestController : Controller
{
    [HttpGet]
    [Authorize(Roles = "Admin")]
    public IActionResult Get()
    {
        return Ok("test");
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以使用具有 dotnet 授权策略的范围来实现与上述非常相似的内容,但我只想知道是否有关于是否/何时使用范围或角色的指导,或者这只是一个偏好问题......

我在任何与 OAuth/JWT 相关的 RFC 中都找不到对角色声明的太多参考,而在整个过程中都提到了作用域。

authorization scopes oauth-2.0 jwt role-based-access-control

7
推荐指数
1
解决办法
2702
查看次数

动态生成RBAC角色和权限

我正在寻找一种按需生成新RBAC角色的方法.我正在开发一个有两个主要参数的RBAC系统.而不是简单地让用户与角色相关联,而是与一组权限相关联的角色; 用户可以与"针对特定项目"的角色相关联,然后用户可以仅为该项目拥有该角色的权限(或者用户拥有该角色的其他项目).用户可以在一个项目上具有特定角色,在另一个项目上具有不同角色; 授予角色的权限对于每个项目都是一致的; 用户对项目的权限取决于用户对项目的作用.

为了响应具有两个参数的RBAC系统,lmontrieux建议对不同的项目使用不同的角色.例如,如果在项目"P1"和"P2"中使用角色"admin",则创建角色"P1:admin"和另一个角色"P2:admin".这似乎是要走的路,但我不想创建一组静态角色.首先,将有几个项目,除了项目ID之外,我不应该编写几组相同的权限.其次,更重要的是,项目"P3","P4"和"P5"尚不存在,当它们确实存在时,它们将由用户创建.由于我无法为不可预测的未来项目创建基于静态角色的权限,因此我需要开发一种基于通用标准生成项目特定角色的方法.

我认为这是一个很好的应用程序,使用对象和类,但我不知道如何构建它.

roles dynamic access-control rbac role-based-access-control

6
推荐指数
0
解决办法
654
查看次数

角度2订阅值更改未反映在html上

这让我很困惑。我可能对订阅的工作方式没有深刻的了解。

Angular 2最终版本

目标:根据角色隐藏/显示导航菜单方法:我使用Facebook来验证用户身份。身份验证后,将检索用户角色,并将其用于确定是否应显示“管理”菜单。使用true进行observable.next调用,导航栏组件订阅将拾取该标志并将isAdmin更改为true。(isAdmin开头为false)这将允许显示Admin菜单。

问题:订户可以正确拾取true标志,并且isAdmin设置为true。但是,“管理”菜单不会显示。

navbar.component.ts

@Component({
selector: 'as-navbar',
templateUrl: 'app/shared/navbar/navbar.html',
changeDetection: ChangeDetectionStrategy.OnPush
})
export class NavbarComponent {
@Input() brand: string;
public isAdmin:boolean;

constructor(private _securityService:SecurityService){
    let self = this;

    this._securityService.isAdminObservable.subscribe(function (flag) {
        this.isAdmin = flag;
        console.log('subscribe received on navbar');
    }.bind(this));
 }
}
Run Code Online (Sandbox Code Playgroud)

navbar.html

        <li class="dropdown" *ngIf="isAdmin">
      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Admin<span class="caret"></span></a>
      <ul class="dropdown-menu">
        <li><a [routerLink]="['/campaigns']">Campaigns</a></li>
        <li><a [routerLink]="['/products']">Products</a></li>
        <li><a [routerLink]="['/products']">Reports</a></li>
      </ul>
    </li>
Run Code Online (Sandbox Code Playgroud)

app.component.ts

    constructor(private _http: Http, private _jsonp: Jsonp, private _securityService:SecurityService) {
    this.appBrand = CONSTANTS.MAIN.APP.BRAND;

    let self = …
Run Code Online (Sandbox Code Playgroud)

subscribe observable role-based-access-control angular2-changedetection angular

6
推荐指数
1
解决办法
4347
查看次数

分层数据方案中的实体级访问控制

坦率地说,我对实体级授权有一个要求。我希望得到一些关于这个权限结构的指导,我如何在 .NET 4.5 中实现它,以及是否有办法改进它。

它是这样的:


我有一组结构如下的数据:

在此处输入图片说明

在哪里

  • aFleet是零个或多个的集合Cars
  • aFleet可以包含其他Fleets

舰队可以在以后重组和移动以用于组织目的。

我在系统中有多个具有与这些实体相关的权限的角色:

  • 车主:可以在车队中添加或移除汽车
  • 经理:为汽车分配司机
  • 司机:允许简单地驾驶汽车
  • 机械师:可以修理汽车

授权逻辑允许User系统中的 a 被授予对具有一个或多个角色的aFleet或 a 的访问权限Car

以下是一些有助于解释的场景:

  1. 如果我授予User Jim以角色访问Fleet #5 的权限Driver,他将被允许驾驶车队 #2 下的任何汽车。由此产生的权限允许他驾驶汽车 #4, 5, 6
  2. 如果我授予用户MauraCar #1作为机械师的访问权限,则由此产生的权限允许她只修理汽车 #1。
  3. 如果我授予用户Sarah访问 Fleet #2 的角色Owner和权限Mechanic,她可以添加和移除车队 #2, 4, 5并且她可以修理汽车 #1, 2, 3, 4, 5, 6 …

access-control claims-based-identity role-based role-base-authorization role-based-access-control

6
推荐指数
1
解决办法
658
查看次数

GraphQL - 如何区分公共和私有字段?

上下文
我有一个 GraphQL API 和一个 NodeJS & Angular 应用程序,其中包含一个包含用户的 MongoDB 数据库。对于每个用户,都有一个包含公共信息的公共页面,例如idusername。当用户登录时,会有一个包含扩展信息的私人资料页面,例如email.

仅就上下文而言,我使用jsonwebtokenaccesscontrol来对用户进行身份验证和授权。该信息存储在每个 GraphQL 解析函数的上下文中,因此可以使用识别登录用户所需的任何信息。

我有一个 GraphQL 查询,它检索公共用户,如下所示:

query getUserById($id: ID!) {
  getUserById(id: $id) {
    id,
    username
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试考虑检索公共用户或私人用户的正确实现。由于 GraphQL 是强类型的,我在想出合适的解决方案时遇到了一些麻烦。

问题
如何区分公共用户和私人用户?

注意事项

1. 单独查询
因此,选项之一是对公共和私有字段进行单独查询:

公开查询

query getUserById($id: ID!) {
  getUserById(id: $id) {
    id,
    username
  }
}
Run Code Online (Sandbox Code Playgroud)

私人查询

query getMe {
  getMe {
    id,
    username,
    email
  }
}
Run Code Online (Sandbox Code Playgroud)

2. 使用 GraphQL 接口
我看到了这篇 Medium 文章,它解释了如何使用 …

access-control node.js role-based-access-control graphql graphql-js

6
推荐指数
1
解决办法
2635
查看次数

在 Angular 中 -&gt; 如何使用基于角色的访问将角色保存在数据库中来检查用户是否具有权限

我正在尝试以角度为我的应用程序进行基于角色的访问,我需要一些帮助,因为我是角度的新手......

\n\n

首先,这是我在路线中确定哪些角色可以访问它的内容......

\n\n

来自 app-routing.module.ts

\n\n
{\n  path: 'profile',\n  component: ComunityComponent,\n  canActivate: [AuthGuard],\n  data: {\n    allowedRoles: ['admin', 'user']\n  }\n},\n
Run Code Online (Sandbox Code Playgroud)\n\n

其次,我使用 canActivate 函数来检查用户是否可以访问该路由。\n来自 auth.guard.ts

\n\n
private hasAccess: boolean;\n\nconstructor(private router: Router, private auth: AuthService) {}\n\ncanActivate(next: ActivatedRouteSnapshot,\n              state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {\n    const allowedRoles = next.data.allowedRoles;\n    if (localStorage.getItem('currentUser')) {\n      return this.checkAccess(localStorage.getItem('currentUser'), allowedRoles);\n    }\n\n    this.router.navigate(['/login'], {queryParams: {returnUrl: state.url}});\n    return false;\n  }\n
Run Code Online (Sandbox Code Playgroud)\n\n

第三,我开发了 accessLoginToken 函数,它将通过 httpclient.get 服务查找登录用户的角色,该服务返回一个包含分配给用户的角色的数组。例子{success: true, roles:['user']}\n来自 auth.service.ts

\n\n
 accessLoginToken(token: string) {\n    const check = …
Run Code Online (Sandbox Code Playgroud)

role-base-authorization typescript role-based-access-control angular auth-guard

6
推荐指数
1
解决办法
1万
查看次数