网站直播时,网络应用程序上的登录用户名不正确



我有一个在机器上运行的web应用程序,只有当特定用户登录到该机器时才能使用。所以在page_load中,我有以下代码:

    dim sName as string = System.Windows.Forms.SystemInformation.UserName
    if sName <> 'sstation' then
       Response.Direct("NoAccess.aspx")
    end if

当我在Visual Studio中调试时,如果我以sstation身份登录到计算机,则会加载页面,否则会加载NoAccess页面。然而,如果我在网络浏览器中打开页面,它总是会把我带到NoAccess页面,我不知道为什么!任何想法

我在页面上添加了一个文本框,并添加了以下代码:

    lblErrorMessage.Text = "You are logged in as " + sADname

即使我以sstation的身份登录到计算机,名称也会显示为Administrator,那么当页面位于服务器上时,System.Windows.Forms.SystemInformation.UserName来自哪里?

此代码运行在web服务器上,而不是用户登录的计算机上。它将返回IIS运行的用户帐户。调试时,它在本地计算机上运行的原因是在这种情况下,web服务器运行在您的本地计算机上。可以在IIS站点设置为使用的App Pool中配置此帐户。有关配置的更多信息,请参阅此链接。

为了在IIS中获得客户端计算机的用户帐户,必须为Windows authentication配置IIS,并且客户端和服务器很可能都需要成为Domain的一部分。如果这不可能,您将需要使用其他类型的身份验证,最简单的是Forms身份验证或ASP.NET Identity

这里有一些链接可以让你开始。

  • ASP.NET标识
  • 表单身份验证
  • Windows身份验证

最新更新