asp.net – ASP .NET 5 MVC 6身份3角色索赔组[已关闭]

前端之家收集整理的这篇文章主要介绍了asp.net – ASP .NET 5 MVC 6身份3角色索赔组[已关闭]前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻找一个解决方案,使用ASP.NET 5 MVC 6中的高级角色/组权限管理与身份3.我启动了一个新的预览入门Web项目与一个集成的轻松登录系统。

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

>用户可以在多个组/角色
>一个组/角色有很多访问对象(例如CanAccessUser,CanEditUser …)
>每个组/角色的这些访问对象(也许是声明?)相互补充
>(最终解决方案可选):additional =>访问对象(可能是权利要求)可以由组独立地分配给用户

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

但是我错过了一个很好的例子/文档来使用它们。

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

存在这些要求已经是一个工作的例子,你不必重塑轮子。

解决方法

我们在同一条船上,没有太多的阅读,除了来源当然…

我们最终实施政策。政策是授权满足要求的一组索赔。然后可以将这些策略应用于控制器。

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

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

我们定义了角色,为其分配了1个或更多的权利要求,并将角色分配给用户,允许根据对控制器的相应策略进行检查。

您可以将IAuthorizationService注入控制器或属性,如下所示:

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相关文章