publicoverrideMembershipUser CreateUser(stringusername,stringpassword,stringemail,stringpasswordQuestion,stringpasswordAnswer,boolisApproved,objectproviderUserKey,outMembershipCreateStatus status)
{stringstr3;
MembershipUser user;if(!SecUtility.ValidateParameter(refpassword,true,true,false,0x80))
{
status=MembershipCreateStatus.InvalidPassword;returnnull;
}//生成salt值stringsalt=base.GenerateSalt();//结合salt值对密码进行散列stringobjValue=base.EncodePassword(password, (int)this._PasswordFormat, salt);if(objValue.Length>0x80)
{
status=MembershipCreateStatus.InvalidPassword;returnnull;
}if(passwordAnswer!=null)
{
passwordAnswer=passwordAnswer.Trim();
}if(!string.IsNullOrEmpty(passwordAnswer))
{if(passwordAnswer.Length>0x80)
{
status=MembershipCreateStatus.InvalidAnswer;returnnull;
}
str3=base.EncodePassword(passwordAnswer.ToLower(CultureInfo.InvariantCulture), (int)this._PasswordFormat, salt);
}else{
str3=passwordAnswer;
}if(!SecUtility.ValidateParameter(refstr3,this.RequiresQuestionAndAnswer,true,false,0x80))
{
status=MembershipCreateStatus.InvalidAnswer;returnnull;
}if(!SecUtility.ValidateParameter(refusername,true,true,true,0x100))
{
status=MembershipCreateStatus.InvalidUserName;returnnull;
}if(!SecUtility.ValidateParameter(refemail,this.RequiresUniqueEmail,this.RequiresUniqueEmail,false,0x100))
{
status=MembershipCreateStatus.InvalidEmail;returnnull;
}if(!SecUtility.ValidateParameter(refpasswordQuestion,this.RequiresQuestionAndAnswer,true,false,0x100))
{
status=MembershipCreateStatus.InvalidQuestion;returnnull;
}if((providerUserKey!=null)&&!(providerUserKeyisGuid))
{
status=MembershipCreateStatus.InvalidProviderUserKey;returnnull;
}if(password.Length
{
status=MembershipCreateStatus.InvalidPassword;returnnull;
}intnum=0;for(inti=0; i
{if(!char.IsLetterOrDigit(password, i))
{
num;
}
}if(num
{
status=MembershipCreateStatus.InvalidPassword;returnnull;
}if((this.PasswordStrengthRegularExpression.Length>0)&&!Regex.IsMatch(password,this.PasswordStrengthRegularExpression))
{
status=MembershipCreateStatus.InvalidPassword;returnnull;
}
ValidatePasswordEventArgs e=newValidatePasswordEventArgs(username, password,true);this.OnValidatingPassword(e);if(e.Cancel)
{
status=MembershipCreateStatus.InvalidPassword;returnnull;
}try{
SqlConnectionHolder connection=null;try{
connection=SqlConnectionHelper.GetConnection(this._sqlConnectionString,true);this.CheckSchemaVersion(connection.Connection);
DateTime time=this.RoundToSeconds(DateTime.UtcNow);
SqlCommand command=newSqlCommand("dbo.aspnet_Membership_CreateUser", connection.Connection);
command.CommandTimeout=this.CommandTimeout;
command.CommandType=CommandType.StoredProcedure;
command.Parameters.Add(this.CreateInputParam("@ApplicationName", SqlDbType.NVarChar,this.ApplicationName));
command.Parameters.Add(this.CreateInputParam("@UserName", SqlDbType.NVarChar, username));
command.Parameters.Add(this.CreateInputParam("@Password", SqlDbType.NVarChar, objValue));
command.Parameters.Add(this.CreateInputParam("@PasswordSalt", SqlDbType.NVarChar, salt));
command.Parameters.Add(this.CreateInputParam("@Email", SqlDbType.NVarChar, email));
command.Parameters.Add(this.CreateInputParam("@PasswordQuestion", SqlDbType.NVarChar, passwordQuestion));
command.Parameters.Add(this.CreateInputParam("@PasswordAnswer", SqlDbType.NVarChar, str3));
command.Parameters.Add(this.CreateInputParam("@IsApproved", SqlDbType.Bit, isApproved));
command.Parameters.Add(this.CreateInputParam("@UniqueEmail", SqlDbType.Int,this.RequiresUniqueEmail?1:0));
command.Parameters.Add(this.CreateInputParam("@PasswordFormat", SqlDbType.Int, (int)this.PasswordFormat));
command.Parameters.Add(this.CreateInputParam("@CurrentTimeUtc", SqlDbType.DateTime, time));
SqlParameter parameter=this.CreateInputParam("@UserId", SqlDbType.UniqueIdentifier, providerUserKey);
parameter.Direction=ParameterDirection.InputOutput;
command.Parameters.Add(parameter);
parameter=newSqlParameter("@ReturnValue", SqlDbType.Int);
parameter.Direction=ParameterDirection.ReturnValue;
command.Parameters.Add(parameter);
command.ExecuteNonQuery();intnum3=(parameter.Value!=null)?((int)parameter.Value) :-1;if((num3<0)||(num3>11))
{
num3=11;
}
status=(MembershipCreateStatus)num3;if(num3!=0)
{returnnull;
}
providerUserKey=newGuid(command.Parameters["@UserId"].Value.ToString());
time=time.ToLocalTime();
user=newMembershipUser(this.Name, username, providerUserKey, email, passwordQuestion,null, isApproved,false, time, time, time, time,newDateTime(0x6da,1,1));
}finally{if(connection!=null)
{
connection.Close();
connection=null;
}
}
}catch{throw;
}returnuser;
}