如何获取Windows用户名时,身份冒充=在asp.net“真”?(How to get Windo

2019-06-18 09:27发布

我创建一个内联网asp.net大家在公司应该有机会获得MVC应用程序。 我需要运行模拟的数据库访问等的网站,但我想知道每个用户是谁。

当我看到Page.User.Identity.Name它是空白。 是否有可能获得用户的Windows帐户名,即使网站运行的模拟的?

编辑:这里有一个小的详细信息。 我在IIS 6站点使用匿名访问运行启用。 该网站下可以访问数据库中的系统帐户来运行(因为所有的员工没有访问数据库)。

我的web.config中有<authentication mode="Windows" /><identity impersonate="true"/>

我的目标是,用户不必登录 - 这一事实,他们登录到我们的网络(而事实上,该网站是不是在一个外部IP)是不够的认证。 我只是想知道用户是为了跟踪他们做出改变,谁等等。

Answer 1:

随着<authentication mode="Windows"/>在您的应用程序并在IIS中启用匿名访问,您将看到以下结果:

System.Environment.UserName: Computer Name
Page.User.Identity.Name: Blank
System.Security.Principal.WindowsIdentity.GetCurrent().Name: Computer Name 

随着<authentication mode="Windows"/>在你的应用程序,而“匿名访问”禁用的,只有“集成Windows身份验证”在IIS中,您将看到以下结果:

System.Environment.UserName: ASPNET (user account used to run ASP.NET service)
Page.User.Identity.Name: Domain\ Windows Account Name 
System.Security.Principal.WindowsIdentity.GetCurrent().Name: Computer Name\ASPNET

随着<authentication mode="Windows"/><identity impersonate ="true"/>在你的应用程序,而“匿名访问”禁用的,只有“集成Windows身份验证”在IIS中,您将看到以下结果:

System.Environment.UserName: Windows Account Name 
Page.User.Identity.Name: Domain\ Windows Account Name 
System.Security.Principal.WindowsIdentity.GetCurrent().Name: Domain\ Windows Account Name


Answer 2:

试试这个

System.Security.Principal.WindowsIdentity.GetCurrent().Name

它应该返回一个字符串与用户的登录名



Answer 3:

除非这个功能已经在MVC框架下改变了,我不认为它有,Page.User.Identity.Name仍然应该工作。 听起来像是你的站点设置为允许匿名身份验证。 如果是这样,请尝试禁用它。



Answer 4:

我只是想后我的修正,因为没有人说过这事。

我有同样的问题时,我发表了网站服务器,但不是我的地方。 所有的设置都是一样的。 然而,在IIS中的“默认网站”从来没有被关闭。 它运行和拦截流量,即使没有任何与之相关的网站。 匿名身份验证是默认开启的,但在我的网站被关闭在端口80上运行它似乎没有关系,我的网站已经把手机关掉了......因为默认是开启它已开启所有流量到端口80。

禁用固定问题的默认Web。 也改变端口8080级的作品。

我希望这可以帮助别人。



文章来源: How to get Windows user name when identity impersonate=“true” in asp.net?