C# 使用域帐户登录 想为部门做个小程序,不过又不想做用户管理部分,恰好所有的用户都在域上。例如 sample.com。我想先做个login,输入用户自己的域帐户和密码后,login 可以检查该用户在域上的账户和密码是否存在和正确,然后返回个bool就好,请问该怎么做?简单点的就OK,谢谢各位 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把网站内的一个目录,目录下放一个文件,文件内容可以为空,在配iis的时候,把这个目录设置成需要Windows身份验证,登录时用webrequest请求一下目录下的文件,如果GetResponse() 不报错,则验证通过,否则就是没有该用户,我们现在就是这么做的 记得在项目中添加对System.DirectoryServices的引用。public bool IsUserValid(string name, string pwd) { DirectoryEntry objDE = new DirectoryEntry("LDAP://testDomain", name.ToLower(), pwd, AuthenticationTypes.ServerBind); DirectorySearcher mySearcher = new DirectorySearcher(objDE); mySearcher.Filter = ("(objectClass=user)"); string expected = "cn=" + name.ToLower(); foreach (SearchResult resEnt in mySearcher.FindAll()) { if (resEnt.GetDirectoryEntry().Name.ToLower() == expected) { return true; } } return false; } using System;using System.DirectoryServices;namespace ConsoleApplication1{ internal class Program { private static void Main(string[] args) { string name = "jim green"; // RDN format string logonName = @"xxx\jgreen"; //pre windows 2000 format Console.WriteLine(IsUserValid(name, "the-password")); Console.WriteLine(IsUserValid(logonName, "the-password")); Console.ReadLine(); } public static bool IsUserValid(string name, string pwd) { DirectoryEntry rootEntry = new DirectoryEntry("LDAP://xxx.com", name.ToLower(), pwd,AuthenticationTypes.ServerBind); try { // Bind to the native object to force authentication Object nativeObject = rootEntry.NativeObject; return true; } catch (Exception ex) { Console.WriteLine(ex); return false; } } }} 注意name参数要么写全称,如: jim green要么写域名+简写(具体规则由域管理员控制):如:xxx\jgreen 登录成功了,原来用户名格式要 xxx\name 才行。先谢谢cppfaq 这样的代码是不很无聊 asp.net连接数据库sql登录界面代码 关于winform的C#datagridview控件显示数据的方式问题 C# 获取FTP服务器连接情况 请教MonoTODO作用 C#的 索引器问题 钩子的窗口函数 大家来谈谈自己以后的计划吧!进者有分 求RGB和CMYK的互相转换组件 新手求教!C#应用程序中panel容器内有关动态控件问题! c#中如何使用命令让TextBox处于焦点 关于webreference的修改
public bool IsUserValid(string name, string pwd)
{
DirectoryEntry objDE =
new DirectoryEntry("LDAP://testDomain", name.ToLower(), pwd, AuthenticationTypes.ServerBind); DirectorySearcher mySearcher = new DirectorySearcher(objDE);
mySearcher.Filter = ("(objectClass=user)");
string expected = "cn=" + name.ToLower();
foreach (SearchResult resEnt in mySearcher.FindAll())
{
if (resEnt.GetDirectoryEntry().Name.ToLower() == expected)
{
return true;
}
}
return false;
}
using System.DirectoryServices;namespace ConsoleApplication1
{
internal class Program
{
private static void Main(string[] args)
{
string name = "jim green"; // RDN format
string logonName = @"xxx\jgreen"; //pre windows 2000 format
Console.WriteLine(IsUserValid(name, "the-password"));
Console.WriteLine(IsUserValid(logonName, "the-password"));
Console.ReadLine();
} public static bool IsUserValid(string name, string pwd)
{
DirectoryEntry rootEntry = new DirectoryEntry("LDAP://xxx.com", name.ToLower(), pwd,AuthenticationTypes.ServerBind); try
{
// Bind to the native object to force authentication
Object nativeObject = rootEntry.NativeObject;
return true;
}
catch (Exception ex)
{
Console.WriteLine(ex);
return false;
}
}
}
}
要么写全称,如: jim green
要么写域名+简写(具体规则由域管理员控制):如:xxx\jgreen