当前位置: 首页 > 编程语言 > C#

使用表单身份验证获取Windows用户名的更好方法是什么?分享

时间:2023-04-10 21:53:29 C#

使用表单身份验证获取Windows用户名的更好方法是什么?我继承了一个使用表单身份验证的项目,但最近的一项功能请求要求我获取某些用户的Windows用户名。这是一个使用Forms身份验证的站点(我不想更改它,此时工作量太大)但我有一个功能请求允许我们的内部用户更轻松地登录(通常无需输入密码)或用户名)。我目前的方法很糟糕,它涉及检查IP地址以查看它们是否从我们的IP之一连接,如果是,则将它们重定向到使用Windows身份验证的单独项目,然后重定向回包含查询的原始页面他们用户名的字符串(如果我被迫继续使用这种方法,我可能需要加密它,尽管它仍然没有我想要的那么安全)。我可以在我的应用程序中相对轻松地进行Windows身份验证,但困难的部分是获取Windows用户名。我不知道该怎么做,因此我的方法非常丑陋。任何帮助将不胜感激。编辑:我的助手应用程序就是这样做的:stringusername=HttpContext.Current.User.Identity.Name;stringretpath=Request.QueryString["retpath"];Response.Redirect("http://"+retpath+"?id="+用户名);本文包含答案(感谢vinodpthmn):http://msdn.microsoft.com/en-us/library/ms972958.aspx我在研究中找到了这篇文章的链接,但没有一个有效!很高兴我终于能够阅读并解决我的问题。正如我所提到的,我只需要获取客户端的Windows用户名,但事实证明这很麻烦,谢天谢地,实际的解决方案相对简单。首先,您需要创建一个额外的登录页面(我称之为winlogin.aspx)并将其设置为Web.Config文件中的默认登录页面,如下所示:在winlogin.aspx.cs文件中,您可以设置Windows用户验证并使用FormsAuthentication.RedirectFromLoginPage(username,false/true);将他们重定向到他们去的地方。实际的winlogin.aspx页面应该是空白的,用户永远不会看到它。您需要将以下部分发布到您的测试Web服务器:在IIS管理器中,转到winlogin.aspx的文件属性并将WindowsAuthentication设置为true并将AnonymousAuthentication设置为false。您还需要创建自定义401错误页面指针(我的指向旧的Login.aspx页面)。可以使用Windows身份验证登录的用户将这样做,其他用户将被重定向到旧的登录页面。瞧!但是有一些问题,你丢失了你的返回URL(你不能在自定义401错误页面的链接中使用“=”,所以没有什么可解析的)所以当人们将cookie设置到winlogin页面时你可能希望被重定向并访问表单登录页面中的cookie以适当地重定向用户。如果有人有任何问题,我建议阅读上面链接的文章,或者随时在这里提问。感谢大家的帮助!您可以使用目录服务PrincipalContextpc=null;UserPrincipal委托人=null;varusername=User.Identity.Name;pc=newPrincipalContext(ContextType.Domain,"在这里输入你的域名");principal=UserPrincipal.FindByIdentity(pc,userName);varfirstName=principal.GivenName??字符串.空;varlastName=principal.Surname??字符串.空;请添加System.DirectoryServices.AccountManagement的引用以上是C#学习教程:使用Forms认证获取Windows用户名有什么更好的方法吗?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: