我的应用具有表单身份验证,但是当用户是管理员时我绕过了表单。我通过使用以下代码拉取用户名来完成此操作:
Request.ServerVariables["LOGON_USER"];
拉出后,我使用返回的名称对LDAP进行身份验证。在我的本地计算机上运行VS时,这很好用。
当我使用IIS运行时,此值为空。原因是我的应用程序启用了匿名身份验证。参考:http://support.microsoft.com/kb/306359
据我所知,我需要为具有表单身份验证的应用启用匿名身份验证。
无论如何我可以拉出登录到PC的用户吗?
更新:我得出的结论是我不能使用匿名身份验证。当我只有表单身份验证设置时,我收到以下错误:
HTTP Error 401.2 - Unauthorized
You are not authorized to view this page due to invalid authentication headers.
答案 0 :(得分:3)
最后的答案是微软的解决方案,但我找到了真正的原因:
所以对于C#,你需要这样做:
string login = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
我不想删除最后一个答案,因为它可能适用于在较早版本的C#上运行的人。
答案 1 :(得分:0)
您可以混合表单和Windows身份验证。请在此处查看类似的解决方案:http://www.pluralsight-training.net/community/blogs/craig/archive/2004/07/24/1699.aspx
您可能没有登录表单中描述的复选框,但您可以只检查HTTP标头中的LOGON_USER。
答案 2 :(得分:0)
知识库文章PRB: Request.ServerVariables("LOGON_USER") Returns Empty String in ASP.NET从未说明<authentication mode="Windows" />
的位置。
<system.web>
<authentication mode="Windows" />
</system.web>
显然,我也有这个问题,或者我不会在这里。