2015-07-17 2 views
7

Я пытаюсь реализовать простую аутентификацию на основе подлинности + авторизацию в приложении MVC5, но я получаю некоторую головную боль, пытаясь понять все части, участвующие в платформе Identity.IIdentity, IPrincipal или IUser: какая разница?

Я читаю несколько руководств и руководств, но У меня нет четкой идеи.

В частности: какая разница между IIdentity, IPrincipal или IUser интерфейсами? Какие из них я должен реализовать?

+0

'IIdentity' против пользовательской информации пользователя,' IPrincipal' от информации о роли пользователя (RBAC), 'IUser' извините? Я понятия не имею об этом –

+0

'IUser' является частью AspNet.Identity. Это вам нужно, если вы ожидаете работать с объектами Identity, такими как 'UserManager' или' SignInManager' – Shoe

ответ

5

'IPrincipal' является .Net framework's interface:

public interface IPrincipal { 
    // Retrieve the identity object 
    IIdentity Identity { get; } 

    // Perform a check for a specific role 
    bool IsInRole (string role); 
} 

Этот интерфейс определяет основные функциональные возможности зарегистрированного пользователя. Объект, реализующий этот интерфейс, представляет собой контекст безопасности, под которым работает ваш код. Вы можете получить разные вкусы IPrincipal .Net: ClaimsPrincipal, WindowsPrincipal и другие - все зависит от используемой структуры. Если вы работаете с базой Asp.Net Identity, вы будете иметь дело с ClaimsPrincipal. Обычно вам не нужно реализовывать этот интерфейс.

IIdentity представляет пользовательские разрешения. Для системы Asp.Net Identity вы будете иметь дело с ClaimsIdentity. Опять же, это то, что вам не нужно реализовывать.

Here is more documentation об IPrincipal и IIDentity.

IUser является частью системы идентификации Asp.Net. Если вы используете Entity Framework часть Identity, класс you'll be provided withIdentityUser, который вы можете наследовать и расширять. Это модель для вас.

В основном IdentityUser является POCO, который сохраняется в базе данных. И когда пользователь вошел в систему, информация от IdentityUser будет преобразована в ClaimsPrincipal и ClaimsIdentity. И когда вы достигнете HttpContext.Current.User, вам будет дано ClaimsPrincipal.

Надеюсь, что это очистит вас.

Смежные вопросы