C# 在iis windows authentication身份验证下,如何实现域用户自动登录

时间:2023-03-09 03:33:55
C# 在iis windows authentication身份验证下,如何实现域用户自动登录

前言:

该博文产生的背景是有个项目在客户那部署方式为iis windows身份验证,而客户不想每次登录系统都要输入帐

号和密码来登录。因此需要得到域用户,然后进行判断该用户是否可以进入系统。

解决方法:见如下代码。首先要说明下情况,我这边没有客户的环境,虽然自己也搞了个测试服务器,在发布项

目时使用了windows身份验证,但是和客户那的环境还是不同。最终的结果就是取得的用户名永远是测试服务器

的那台信息。在网上寻找资料时,看到的

部分答案就是string userAcc = System.Web.HttpContext.Current.User.Identity.Name.Trim();来获取的,下面的

代码加了一下其它的方法进去。

 string userAcc = System.Web.HttpContext.Current.Request.ServerVariables["LOGON_USER"].Trim();
if (userAcc == "")
userAcc = User.Identity.Name.Trim(); int len = userAcc.IndexOf('\\', 0);
userAcc = userAcc.Substring(len + 1, userAcc.Length - len - 1);

在实际开发中遇到的问题

1:在获取用户名,不管用什么用户名登录,只能获取同一个用户名。

原因:客户的域服务器跟部署网站的服务器不是同一个服务,而且域服务器只分配给部署网站的服务器一个用户名,用来登录域服务器,

         所以在获取的时候只能获取这个用户名 。