'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
.
Надеюсь, что это очистит вас.
'IIdentity' против пользовательской информации пользователя,' IPrincipal' от информации о роли пользователя (RBAC), 'IUser' извините? Я понятия не имею об этом –
'IUser' является частью AspNet.Identity. Это вам нужно, если вы ожидаете работать с объектами Identity, такими как 'UserManager' или' SignInManager' – Shoe