如何取得客户端的Windows登录用户名?

时间:2021-12-30 08:37:25
一个供公司某一部门使用的Intranet系统,使用用Forms验证,但希望能够集成Active Directory,希望当一个用户来到这个系统时,能够先取到他的Windows登录名,然后去检索AD,如果有这个用户,再以这个用户名去系统自身数据库取出用户的角色和相应的权限。
别的都没什么问题,关键是如何取得客户端的Windows登录用户名?不要说让他输入哦,老板会杀了我的,呵呵。

13 个解决方案

#1


系统实现:ASP.NET+C#    .NET Framework 1.1

#2


登录页
string UserName=TextBox1.Text.ToString().Trim();
Session["SessUserName"]=UserName;
或者用
FormsAuthentication.RedirectFromLoginPage(UserName,false);

登录后的页
Label1.Text=Session["SessUserName"]+"你好啊!欢迎光临菜鸟乐园!!!!!";
或者用
Label1.Text=Context.User.Identity.Name+"你好啊!欢迎光临菜鸟

#3


参考《asp.net高级编程》第14章

这里PDF下载:
61.145.118.137
csdn
csdn

#4


1. 在ASP.NET中专用属性:
获取服务器电脑名:Page.Server.ManchineName
获取用户信息:Page.User
获取客户端电脑名:Page.Request.UserHostName
获取客户端电脑IP:Page.Request.UserHostAddress

2. 在网络编程中的通用方法:
获取当前电脑名:static System.Net.Dns.GetHostName()
根据电脑名取出全部IP地址:static System.Net.Dns.Resolve(电脑名).AddressList
也可根据IP地址取出电脑名:static System.Net.Dns.Resolve(IP地址).HostName

3. 系统环境类的通用属性:
当前电脑名:static System.Environment.MachineName
当前电脑所属网域:static System.Environment.UserDomainName
当前电脑用户:static System.Environment.UserName

#5


呵呵,先谢过这位仁兄的热心。你可能没有看清楚我的,或是我没写清楚?Forms验证这块我已经做好了,就是希望如果员工用自己的域账号登录了工作电脑,然后当他来到这个系统的时候就不需要再去登录,我只是先验证他是否是我们这个部门的(通过检索活动目录),如果是就拿他的域账号去这个Intranet系统的数据库检索这个员工的角色和权限,然后根据权限判断他是否可以访问某个页面。这些过程都是在后台进行,拥有权限的员工来到系统就直接进入了,但实际上已经验证并授权了。

#6


可以考虑用windows集成认证,这样的话,当客户机登录时,服务端可以通过Page.User或者Context.User对象获取客户机的windows登录信息。

#7


考虑用windows service

#8


呵.和我的一样...
Request.ServerVariables["LOGON_USER"]

#9


http://www.codeproject.com/aspnet/ADSI2.asp
http://www.codeproject.com/showcase/PortSight.asp
http://www.ondotnet.com/pub/a/dotnet/2003/01/20/formsauthp2.html

#10


conquersky(conquersky V) 说的就足够用了。

#11


感谢conquersky(conquersky V),我就是没有查到这个类。
也感谢这么多热心得朋友,多谢了。

#12


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetHT02.asp

解决方案

#13



private void Page_Load(object sender, System.EventArgs e)
{
if (this.User.Identity.Name == "")
{
Response.Status = "401 Access Denied";
}

Response.Write("Page.Server.ManchineName"+Page.Server.MachineName+"<br>");
Response.Write("Page.User.Identity"+Page.User+"<br>");
Response.Write("this.User.Identity.Name"+this.User.Identity.Name+"<br>");
Response.Write("Page.Request.UserHostAddress"+Page.Request.UserHostAddress+"<br>");
Response.Write("Page.Request.UserHostAddress"+Page.Request.UserHostName+"<br>");
Response.Write("Request.ServerVariables.GetValues(\"LOGON_USER\")"+Request.ServerVariables["LOGON_USER"]+"<br>");

                   }

#1


系统实现:ASP.NET+C#    .NET Framework 1.1

#2


登录页
string UserName=TextBox1.Text.ToString().Trim();
Session["SessUserName"]=UserName;
或者用
FormsAuthentication.RedirectFromLoginPage(UserName,false);

登录后的页
Label1.Text=Session["SessUserName"]+"你好啊!欢迎光临菜鸟乐园!!!!!";
或者用
Label1.Text=Context.User.Identity.Name+"你好啊!欢迎光临菜鸟

#3


参考《asp.net高级编程》第14章

这里PDF下载:
61.145.118.137
csdn
csdn

#4


1. 在ASP.NET中专用属性:
获取服务器电脑名:Page.Server.ManchineName
获取用户信息:Page.User
获取客户端电脑名:Page.Request.UserHostName
获取客户端电脑IP:Page.Request.UserHostAddress

2. 在网络编程中的通用方法:
获取当前电脑名:static System.Net.Dns.GetHostName()
根据电脑名取出全部IP地址:static System.Net.Dns.Resolve(电脑名).AddressList
也可根据IP地址取出电脑名:static System.Net.Dns.Resolve(IP地址).HostName

3. 系统环境类的通用属性:
当前电脑名:static System.Environment.MachineName
当前电脑所属网域:static System.Environment.UserDomainName
当前电脑用户:static System.Environment.UserName

#5


呵呵,先谢过这位仁兄的热心。你可能没有看清楚我的,或是我没写清楚?Forms验证这块我已经做好了,就是希望如果员工用自己的域账号登录了工作电脑,然后当他来到这个系统的时候就不需要再去登录,我只是先验证他是否是我们这个部门的(通过检索活动目录),如果是就拿他的域账号去这个Intranet系统的数据库检索这个员工的角色和权限,然后根据权限判断他是否可以访问某个页面。这些过程都是在后台进行,拥有权限的员工来到系统就直接进入了,但实际上已经验证并授权了。

#6


可以考虑用windows集成认证,这样的话,当客户机登录时,服务端可以通过Page.User或者Context.User对象获取客户机的windows登录信息。

#7


考虑用windows service

#8


呵.和我的一样...
Request.ServerVariables["LOGON_USER"]

#9


http://www.codeproject.com/aspnet/ADSI2.asp
http://www.codeproject.com/showcase/PortSight.asp
http://www.ondotnet.com/pub/a/dotnet/2003/01/20/formsauthp2.html

#10


conquersky(conquersky V) 说的就足够用了。

#11


感谢conquersky(conquersky V),我就是没有查到这个类。
也感谢这么多热心得朋友,多谢了。

#12


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetHT02.asp

解决方案

#13



private void Page_Load(object sender, System.EventArgs e)
{
if (this.User.Identity.Name == "")
{
Response.Status = "401 Access Denied";
}

Response.Write("Page.Server.ManchineName"+Page.Server.MachineName+"<br>");
Response.Write("Page.User.Identity"+Page.User+"<br>");
Response.Write("this.User.Identity.Name"+this.User.Identity.Name+"<br>");
Response.Write("Page.Request.UserHostAddress"+Page.Request.UserHostAddress+"<br>");
Response.Write("Page.Request.UserHostAddress"+Page.Request.UserHostName+"<br>");
Response.Write("Request.ServerVariables.GetValues(\"LOGON_USER\")"+Request.ServerVariables["LOGON_USER"]+"<br>");

                   }