3

I'm working on an ASP.NET MVC app running on our intranet. We are using forms authentication, however the usernames set up will be the same as the Active Directory usernames. I'm trying to find a way to pre-populate the login username field with the Windows username, but can't find a way to access the current Windows user identity.

System.Environment.UserDomainName returns "IIS APPPOOL"

System.Security.Principal.WindowsPrincipal.Current.Identity returns a GenericIdentity

HttpContext.Request.LogonUserIdentity.Name returns "NT AUTHORITY\IUSR"

I do not want to authenticate the Windows user or login to the website as the Windows user, I just want to read the username. Is there any way to do this whilst using Forms Authentication rather than Windows Authentication?

4

2 回答 2

0

如果一切正常,请关闭 IIS 中的 Windows 身份验证

于 2014-07-07T08:21:08.530 回答
0

请试试这个:

在 web.config

<identity impersonate="true" />
<authentication mode="Forms">
     <forms loginUrl="./WebLogin.aspx" defaultUrl="./default.aspx" timeout="12" path="/" name=".ASPXFORMSAUTH" />
</authentication>

在代码c#

string windowsName = WindowsPrincipal.Current.Identity.Name;
//OR
string windowsName = Thread.CurrentPrincipal.Identity.Name;

这对我来说很好。

于 2013-06-17T08:45:18.377 回答