我在aspx页面中有以下代码:
protected void Page_Load(object sender, EventArgs e)
{
if (User.Identity.IsAuthenticated)
lblAuthentication.Text =
"Authenticated user: " + User.Identity.Name;
else
lblAuthentication.Text =
"User not authenticated. Anonymous access ";
lblWindowsIdentity.Text =
"Windows identity: " + WindowsIdentity.GetCurrent().Name;
} // Page_Load()
web.config设置如下:
<authentication mode="Windows" />
<authorization>
<allow users="*" />
</authorization>
以管理员身份登录Bob时,我得到以下输出
Authenticated user: Bob-PC\Bob
Windows identity: Bob-PC\Bob
其他代码告诉我:
Administrator: True
User: True
Guest: False
PowerUser: False
AccountOperator: False
SystemOperator: False
然后我切换用户(Windows Vista),以访客身份登录,浏览到同一个网站,我得到相同的输出???
Authenticated user: Bob-PC\Bob
Windows identity: Bob-PC\Bob
Administrator: True
User: True
Guest: False
PowerUser: False
AccountOperator: False
SystemOperator: False
为什么我为不同的用户获得相同的输出?
答案 0 :(得分:0)
WindowsIdentity.GetCurrent()。名称是IIS线程正在运行的身份。
答案 1 :(得分:0)
因为网站是在Bob-PC \ Bob的环境下运行而不是您登录的用户。您正在进行的通话正在查看网站流程(不是网站外的其他内容[其他窗口])。
如果您使用的是IIS,则可以通过修改托管网站的应用程序池的属性来更改运行工作进程的标识....
注意:您可以在.net中使用模拟来强制IIS在浏览用户的上下文中运行。这就是保护在LAN上运行的应用程序的方式,例如运行Windows网络。但为了使其工作,您必须使用IE,因为其他浏览器不传递域身份验证凭据。)