我应该使用角色类型的角色或声明来种植Identity数据库吗?

时间:2017-06-20 20:43:27

标签: asp.net-core asp.net-core-mvc asp.net-identity claims-based-identity asp.net-identity-3

我正在编写一个ASP.NET Core 1.1 Web应用程序。现在我正在尝试设置我的数据库,以便它可以使用但是我被踩到看似基本的东西......

我对Roles非常熟悉,而且对声明有点熟悉。我知道我可以创建一个ClaimTypes.Role类型的声明。但是当我打算用我的身份数据库与用户,角色等进行播种时,我不清楚这些项目:

  • 我应该只使用RoleManager创建标准角色吗?
  • 我应该只创建ClaimTypes.Role声明吗?
  • 我应该同时为系统工作吗?

例如,我想拥有Admin,Owner,Employee和Plain。

Admin
    identity:full
Owner
    identity:medium
    billing:full
Employee
    identity:low
    billing:view
Plain
    identity:low

顺便说一下,我想要创建的角色(每个角色都有一个或多个权限作为声明)应该有效用于授权(授权属性为控制器)。

1 个答案:

答案 0 :(得分:0)

在我看来 - 如果您开始新项目仅使用声明。

使用RoleManager可能更容易理解和使用角色,但声明更通用,更灵活,更强大。

声明有点难以启动,但随后它们非常易于使用,尤其是在基于策略的自定义授权或授权处理程序中(例如,在基于资源的授权中)。


请阅读更多:


小例子如何使用声明创建自定义策略:

Startup.cs

services.AddAuthorization(options =>
{
    options.AddPolicy("Employee", p =>
    {
        p.RequireAuthenticatedUser();
        p.RequireClaim(ClaimTypes.Role, "Employee");
        p.Build();
     });
});