ASP.NET身份验证问题

时间:2011-06-08 10:57:43

标签: asp.net windows-authentication

我在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 

为什么我为不同的用户获得相同的输出?

2 个答案:

答案 0 :(得分:0)

WindowsIdentity.GetCurrent()。名称是IIS线程正在运行的身份。

答案 1 :(得分:0)

因为网站是在Bob-PC \ Bob的环境下运行而不是您登录的用户。您正在进行的通话正在查看网站流程(不是网站外的其他内容[其他窗口])。

如果您使用的是IIS,则可以通过修改托管网站的应用程序池的属性来更改运行工作进程的标识....

注意:您可以在.net中使用模拟来强制IIS在浏览用户的上下文中运行。这就是保护在LAN上运行的应用程序的方式,例如运行Windows网络。但为了使其工作,您必须使用IE,因为其他浏览器不传递域身份验证凭据。)