Приложение IdentityManager.AspNetIdentity и MVC 5.0 работает с разными типами утверждений ролей.

Я использую «IdentityManager.AspNetIdentity» для реализации роли и утверждений для приложения ASP.Net MVC 5.0.

(Идентитиманажер. Аспнетидентити)

Я заметил, что если создать новую роль в IdentityManager и назначить ее определенному пользователю, IdentityManager создаст роль и создаст новое утверждение с ClaimType, равным «роли».

Изображение: Ситуация претензии

Теперь... Поправьте меня, если я ошибаюсь:

Со стороны приложения MVC я знаю, что по умолчанию фреймворк проверяет **ClaimType = "

http://schemas.microsoft.com/ws/2008/06/identity/claims/role

"** в целях обеспечения безопасности при проверке безопасности.

Изображение: Временное решение

Теперь мое решение, чтобы заставить IdentityManager и приложение MVC работать с одной и той же ролью, состоит в том, чтобы добавить утверждения с ClaimType, равным схеме Microsoft.

Но как я могу позволить IdentityManager заполнять ClaimType схемой Microsoft вместо «роли» каждый раз, когда я назначаю роль пользователю?

Или, с другой стороны, как я могу заставить Microsoft.Identity2.0 тестировать «ролевой» ClaimType вместо схемы при тестировании роли пользователя?

Благодаря поддержке


person DarioN1    schedule 20.04.2016    source источник


Ответы (1)


Добавьте RoleClaimType в AspNetIdentityManagerService в файле Startup.cs:

public class ApplicationIdentityManagerService : 
    AspNetIdentityManagerService<ApplicationUser, string, IdentityRole, string>
{
    public ApplicationIdentityManagerService(ApplicationUserManager userMgr, ApplicationRoleManager roleMgr)
        : base(userMgr, roleMgr)
    {
        RoleClaimType = System.Security.Claims.ClaimTypes.Role;//or streight RoleClaimType = "http://schemas.microsoft.com/ws/2008/06/identity/claims/role";
    }

}

И теперь IdentityManager работает с Microsoft Schema ("http://schemas.microsoft.com/ws/2008/06/identity/claims/role")

Примечание. ClaimTypes.Role — из System.Security.Claims, а не из IdentityManager.Constants.

person mitko    schedule 26.07.2016