• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
C罗.net
DotNetNuke vs SharePoint
博客园    首页    新随笔    联系   管理    订阅  订阅

在C#中访问AD,核对输入的用户名和密码是否正确 (转)

系统登录中,和邮件系统合并,系统本来的用户名和密码可以登录,用邮件用户密码也可以登录。

/**//// <summary>
        
/// 登陆
        
/// </summary>
        
/// <param name="strUser">用户ID</param>
        
/// <param name="strPsw">用户密码</param>
        
/// <returns></returns>

        public bool Login(string strUser,string strPsw)
        
{
            
string SQL=" SELECT U.USERID,U.USERNAME"
                
+" FROM BS_USER U "
                
+" WHERE U.STATUS=0 AND U.USERID='"+strUser+"' AND USERPWD='"+strPsw+"'";
            DataTable Dt
=IBSConn.getDataSet(SQL).Tables[0];    
            
/**////AD 验证
            if(Dt.Rows.Count==0)
            
{
                AD_China ad
=new AD_China();
                
if(!ad.IsAuthenticated(strUser,strPsw)) return false;
            }


            SQL
=" SELECT U.USERID,U.USERNAME,U.Email,O.ORGID,O.ORGNAME,F.OrgID AS FinOrgID,F.FincName,O.ORGFORM,PRMTNAME AS ORGFORMNAME, O.NODEID,O.TREEID"
                        
+",OP.OrgID ParentOrgID ,OP.OrgName ParentOrgName"
                        
+" FROM BS_USER U LEFT JOIN BS_ORG O ON U.ORGID=O.ORGID"
                        
+" LEFT JOIN BS_ORG OP ON O.SuperOrgID=OP.OrgID"
                        
+" LEFT JOIN BS_FinanceOrg F ON O.FincID=O.FincID "                
                        
+" LEFT JOIN DBO.BS_PRMT P ON P.PRMTTYPEID=1 AND PRMTID=O.ORGFORM"
                        
+" WHERE U.STATUS=0 AND( U.USERID='"+strUser+"'OR U.Email='"+strUser+"')";     // 验证邮件用户密码 
            Dt
=IBSConn.getDataSet(SQL).Tables[0];            
            
if(Dt.Rows.Count>=1)
            
{
                
//其他操作
                
            }
else return false;

            
            
return true;

        }


AD验证类:

public class AD_China
    
{
        
private string _path;
        
private string _filterAttribute;

        
public AD_China()
        
{
            
//
            
// TODO: 在此处添加构造函数逻辑
            
//

                _path
="LDAP://china.com/DC=china,DC=com";
            
/**//*
            <add key="AdminUser" value="R7xM12rqyGA="/>
            <add key="AdminUserPassword" value="pZ/cZiaO9TE="/>
    
*/


        }



        
public bool IsAuthenticated(string username, string pwd)
        
{
        
            
            
try
            
{     
                DirectoryEntry entry 
= new DirectoryEntry( _path,  username, pwd);
        
                
// 绑定到本机 AdsObject 以强制身份验证。 
                Object obj = entry.NativeObject;
                DirectorySearcher search 
= new DirectorySearcher(entry);
                search.Filter 
= "(SAMAccountName=" + username + ")";
                search.PropertiesToLoad.Add(
"cn");
                SearchResult result 
= search.FindOne();
                
if(null == result)
                
{
                    
return false;
                }

                
// 更新目录中的用户的新路径
                _path = result.Path;
                _filterAttribute 
= (String)result.Properties["cn"][0];
            }

            
catch (Exception ex)
            
{    
            
//    throw new Exception("对用户进行身份验证时出错。 " + ex.Message);
                return false;
            }

            
return true;
        }

}
posted @ 2008-09-29 14:54  皇上爱累了  阅读(2048)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3