用户和标识 基于角色的安全性是通过 Principal 和 Identity 对象实现的。已进行身份验证的调用方的标识和角色成员身份是通过 Principal 对象公开的,该对象附加在当前 Web 请求中。可以使用 HttpContext.Current.User 属性检索该对象。如果应用程序不需要对调用方进行身份验证,例如,用户正在浏览站点中可以公开访问的部分,则 Principal 对象代表的是匿名 Internet 用户。
Principal 对象有很多类型,准确的类型取决于应用程序所使用的身份验证机制。但是,所有 Principal 对象都要实现 System.Security.Principal.IPrincipal 接口,它们都维持着一个角色列表,用户是其中的一个成员。
Principal 对象还包含 Identity 对象,后者包括用户名以及指示身份验证类型和用户是否已经进行身份验证的标志。这样就能够区分已进行身份验证和匿名的用户。Identity 对象也有许多不同类型,取决于身份验证的类型,虽然所有标识对象都要实现 System.Security.Principal.IIdentity 接口。
以下表格给出了可能的身份验证类型以及 ASP.NET Web 应用程序使用的 Principal 和 Identity 对象的各种不同类型。