使用RoleClaims作为Identity .NET EFCore 2.0

时间:2017-12-04 22:08:40

标签: asp.net-identity claims-based-identity asp.net-core-2.0

我的应用程序将拥有可以申请加入组织的用户。作为组织的成员,您可以获得管理组织部分的权限,例如edit-membership-status。此权限仅适用于此组织。该应用程序将不是多租户,用户将有一个登录,但可以是多个组织的成员。

我正在使用带有实体框架和身份的.Net core 2.0。我设法设置用户,角色,声明和roleclaims。我已经将一个organisationId添加到IdentityRole并扩展了IsInRole,以检查该角色是否属于正确的组织。

public static bool IsInRole(this ClaimsPrincipal user, Role role, Guid 
organisationId)
    {
        var isInRole = user.IsInRole(role.Name);
        var isCorrectOrganisation = (organisationId == role.OrganisationId);
        return isInRole && isCorrectOrganisation;
    }

这允许我检查用户是否在角色和组织中。但是,我希望使用更细粒度的方法和权限。我可以为角色添加声明,即CanEdit - MembershipStatus。此声明被添加到ClaimsPrincipal,但不包含与持有声明的角色相关的organisationId的信息。

如何使用角色声明来检查仅限于所选组织的权限? 我正在使用授权服务的授权处理程序和要求来检查权限。在这种情况下,检查是否允许用户从提供的成员资格中读取。

var isAuthorizedRead = await _authorizationService.AuthorizeAsync(
                User, membership,
                CRUDOperations.Read);

0 个答案:

没有答案