IIdentity, IPrincipal或IUser:有什么区别?
本文关键字:什么 区别 IUser IPrincipal IIdentity | 更新日期: 2023-09-27 18:03:25
我正在尝试在MVC5应用程序中实现简单的基于角色的身份验证+授权,但我正在尝试理解身份框架中涉及的所有部分
我正在看一些教程和指南,但我还是不太清楚。
特别是:IIdentity
, IPrincipal
或IUser
接口的区别是什么?我应该实现哪一个?
'IPrincipal'是。net框架的接口:
public interface IPrincipal {
// Retrieve the identity object
IIdentity Identity { get; }
// Perform a check for a specific role
bool IsInRole (string role);
}
该接口定义了登录用户的基本功能。实现此接口的对象表示运行代码的安全上下文。你可以在。net中得到不同风格的IPrincipal
: ClaimsPrincipal
、WindowsPrincipal
和其他——这都取决于你使用的框架。如果您正在使用Asp。Net Identity框架,你将处理ClaimsPrincipal
。通常不需要实现这个接口。
IIdentity
表示用户权限。Asp。Net Identity框架,您将处理ClaimsIdentity。同样,这是您不需要实现的。
这里有更多关于IPrincipal
和IIDentity
的文档
IUser
是Asp的一部分。网络身份框架。如果你正在使用身份的实体框架部分,你将提供IdentityUser
类,你可以继承和扩展。这是一个供您实现的模型。
基本上,IdentityUser
是一个保存在数据库中的POCO。当用户登录时,框架将IdentityUser
中的信息转换为ClaimsPrincipal
和ClaimsIdentity
。当您访问HttpContext.Current.User
时,您将获得ClaimsPrincipal
。