Page.User.Identity与Request.LogonUserIdentity之间的差异

jam*_*o00 9 c# asp.net asp.net-membership

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

Zha*_*uid 19

这取决于您用于对用户进行身份验证的机制,以及您用于模拟的设置.

例如,在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);
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

Page.User.Identity:zhaph

Request.LogonUserIdentity:[ComputerName]\Ben

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

在API的方面,HttpRequest.LogonUserIdentity被调用到的WindowsIdentity类,它将始终代表Windows用户帐户,而Page.User正在创造一个实现IPrinciple一个对象,它允许您使用许多不同的后盾来表示用户stores - 例如MembershipProvider提供的SQL数据库结构.