gpt4 book ai didi

asp.net - ASP .NET 5 MVC 6 Identity 3 角色声明组

转载 作者:行者123 更新时间:2023-12-02 08:33:10 25 4
gpt4 key购买 nike

我目前正在寻找一种解决方案,以便在带有 Identity 3 的 ASP .NET 5 MVC 6 中使用高级角色/组权限管理。我启动了一个带有集成的简易登录系统的新预览入门 Web 项目。

现在我需要一个复杂的“用户权限管理”,具有以下功能:

  1. 用户可以属于多个组/角色
  2. 一个组/角色有许多访问对象(例如 CanAccessUser、CanEditUser...)
  3. 每个组/角色的这些访问对象(也许是声明?)相辅相成
  4. (最终解决方案可选):另外 => 访问对象(可能是声明)可以由组独立分配给用户

我已经看到身份已经广泛地提供了适合我的表结构。 (例如 AspNetUsers、AspNetUserRoles、AspNetRoles、AspNetRoleClaims),

但是我缺少一个很好的示例/文档来使用它们。

对于MVC 5,我使用了这个例子:用户有很多组,一个组可以有很多角色(角色是类/函数源代码中的访问对象) ASP.NET Identity 2.0: Implementing Group-Based Permissions Management

满足这些要求已经是一个可行的示例,您不必重新发明轮子。

最佳答案

我们在这里处于同一条船上,当然除了来源之外没有太多阅读......

我们最终实现了政策。策略是满足授权所需的一组声明。然后可以将这些策略应用于 Controller 。

您可以在 Startup.cs、ConfigureServices 中定义您的策略:

services.AddAuthorization(options =>
{
options.AddPolicy("SalesSenior", policy =>
{
policy.RequireClaim("department", "sales");
policy.RequireClaim("status", "senior");
});
});

我们定义了角色,为它们分配了 1 个或多个声明,并为用户分配了角色,以便在点击 Controller 时根据适当的策略检查它们。

您可以将 IAuthorizationService 注入(inject)到 Controller 或属性中,如下所示:

public class SalesDashboardController: Controller
{
private readonly IAuthorizationService _authz;

public VarianceOverviewController(IAuthorizationService authz)
{
_authz = authz;
}
...
}

然后您可以使用 IAuthorizationService 来检查用户声明的有效性...

if (await _authz.AuthorizeAsync(User, "SalesSenior"))
{
// User is authorized
}

This article是我这些东西的主要来源,对我来说是一个很好的入门读物。祝你好运!

关于asp.net - ASP .NET 5 MVC 6 Identity 3 角色声明组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29966792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com