c# - Page.User.Identity 与 Request.LogonUserIdentity 之间的区别

标签 c# asp.net asp.net-membership

Page.User.Identity 和 Request.LogonUserIdentity 之间有什么区别(在幕后)?不是类型、名称等方面的差异,而是它们在幕后实现方式的差异(即一个调用 windows xxx api,另一个调用 asp.net xxx api...)。

最佳答案

这取决于您使用什么机制来对用户进行身份验证,以及您的模拟设置是什么。

例如在VS开发服务器下,使用Forms认证,标准SQL成员资格提供程序,代码如下:

// m_LoggedIn is a Literal control on the page:
m_LoggedIn.Text = string.Format("<br />Page.User.Identity: {0} " + 
                                "<br />Request.LogonUserIdentity: {1}",
                                Page.User.Identity.Name, 
                                Request.LogonUserIdentity.Name);

我得到以下输出:

Page.User.Identity: zhaph

Request.LogonUserIdentity: [ComputerName]\Ben

第一行 (Page.User.Identity) 是我登录站点时使用的表单例份验证帐户,第二行是运行请求的 Windows 身份 - 因为我没有启用模拟,这是我的 Windows 登录,因为这是运行 Web 服务器的帐户。

就 API 而言,HttpRequest.LogonUserIdentity正在调用 WindowsIdentity 类,它将始终表示一个 Windows 用户帐户,而 Page.User正在创建一个实现 IPrinciple 的对象,它允许您使用许多不同的后备存储来表示用户 - 例如 MembershipProvider 提供的 SQL 数据库结构。

关于c# - Page.User.Identity 与 Request.LogonUserIdentity 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2186881/

相关文章:

asp.net - 使用 ASP .Net Membership 使用户登录持久化

SQL aspnet_profile

c# - 如何在客户端之间平均分配计算工作

asp.net - 显示CreateUserWizard的错误消息标签

c# - services.AddSwaggerGen() 给出错误

asp.net - 所有数据都不适合数据 GridView

javascript - 按用户更改日期标签

asp.net-mvc - ASP.NET MVC – Controller 测试的模拟成员

c# - MSI 不从 C# 中运行

c# - 如何获取基类的 "new"参数?