帐号管理工具类

用于校验用户帐号和制定用户修改密码,DomainType.Machine表示本机帐号,ContextType.Domain表示域帐号。
 
代码
using  System;
using  System.Collections.Generic;
using  System.Text;

using  System.DirectoryServices.AccountManagement;

namespace  Gren.Framework
{
    
///   <summary>
    
///  帐号管理工具类
    
///   </summary>
     public   sealed   class  AccountUtils
    {
        
public  DomainType DomianType {  get set ; }
        
public   string  DomainName {  get set ; }
        
public   string  UserName {  get set ; }
        
public   string  Password {  get set ; }

        
private  PrincipalContext GetPrincipalContext(DomainType domainType,  string  domainName,  string  userName,  string  password)
        {
            ContextType contextType 
=  ContextType.Domain;

            
switch  (domainType)
            {
                
case  DomainType.ApplicationDirectory :
                    contextType 
=  ContextType.ApplicationDirectory;
                    
break ;
                
case  DomainType.Machine :
                    contextType 
=  ContextType.Machine;
                    
break ;
                
default  :
                    contextType 
=  ContextType.Domain;
                    
break ;
            }

            
return   new  PrincipalContext(contextType, domainName, userName, password);
        }

        
///   <summary>
        
///  校验用户密码是否有效
        
///   </summary>
        
///   <param name="userName"> 用户名 </param>
        
///   <param name="password"> 密码 </param>
        
///   <returns> 校验结果 </returns>
         public   bool  ValidateCredentials( string  userName,  string  password)
        {
            
bool  result  =   false ;

            
using  (PrincipalContext context  =   this .GetPrincipalContext( this .DomianType,  this .DomainName,  this .UserName,  this .Password))
            {
                result 
=  context.ValidateCredentials(userName, password);
            }

            
return  result;
        }

        
///   <summary>
        
///  设置用户密码
        
///   </summary>
        
///   <param name="samAccountName"> 用户名 </param>
        
///   <param name="newPassword"> 新密码 </param>
         public   void  SetPassword( string  samAccountName,  string  newPassword)
        {
            
using  (PrincipalContext context  =   this .GetPrincipalContext( this .DomianType,  this .DomainName,  this .UserName,  this .Password))
            {
                UserPrincipal user 
=  UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, samAccountName);
                user.SetPassword(newPassword);
            }
        }
    }

    
public   enum  DomainType
    {
        Machine 
=   0 ,
        Domain 
=   1 ,
        ApplicationDirectory 
=   2 ,
    }
}

 

你可能感兴趣的:(工具类)