Как я могу создать свой собственный пароль в пустой таблице членства? - PullRequest
1 голос
/ 14 апреля 2011

Мне нужно создать пользователя в пустой таблице [aspnet_Membership].

public string EncodePassword(string pass, string salt)
{       
    byte[] bIn = Encoding.Unicode.GetBytes(pass);
    byte[] bSalt = Convert.FromBase64String(salt);
    byte[] bAll = new byte[bSalt.Length + bIn.Length];
    byte[] bRet = null;
    System.Buffer.BlockCopy(bSalt, 0, bAll, 0, bSalt.Length);
    System.Buffer.BlockCopy(bIn, 0, bAll, bSalt.Length, bIn.Length);
    System.Security.Cryptography.HashAlgorithm s = System.Security.Cryptography.HashAlgorithm.Create(Membership.HashAlgorithmType);
    bRet = s.ComputeHash(bAll);          
    return Convert.ToBase64String(bRet);
}

Я использую аутентификацию ASP.NET для входа, но не могу войти на сайт из-за неправильного пароля.

<membership>
  <providers>
    <clear />
    <add name="AspNetSqlMembershipProvider" 
         type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
         connectionStringName="SQLConnectionString"
         enablePasswordRetrieval="false" 
         enablePasswordReset="true" 
         requiresUniqueEmail="false"
         requiresQuestionAndAnswer="false" 
         minRequiredPasswordLength="3" 
         minRequiredNonalphanumericCharacters="0"
         applicationName="eShop"           
         passwordFormat="Hashed" />
  </providers>
</membership>

    password = EncodePassword(password, "asas" + password);    
    string userId = "0";
    SqlCommand c = new SqlCommand();
    c.Connection = con;
    cmd.CommandText = "Select UserId From aspnet_Users Where UserName ='" + username + "'";
    userId = ((int)cmd.ExecuteScalar()).ToString();
    cmd.CommandText = string.Empty;
    c.CommandText = "insert InTo aspnet_Membership ([ApplicationId], [UserId], [Password], [PasswordSalt], [PasswordFormat]) ";
    c.CommandText += "Values (2 , " + userId + ",'" + password + "','" + password + "', 1)";
    c.ExecuteNonQuery();        

и у меня есть простой контроль входа в систему asp.net Как я могу это сделать?

1 Ответ

0 голосов
/ 14 апреля 2011

Не пытайтесь изменить базу данных напрямую.Если вы хотите добавить нового пользователя программно, используйте метод Membership.CreateUser .Документация по методу содержит пример кода, который вам нужно написать.

Вместо того, чтобы самостоятельно писать код входа и регистрации, вы также можете использовать встроенные элементы управления входом , такие как Элемент управления CreateUserWizard для добавления нового мастера, элемент управления ChangePassword для изменения пароля и т. Д.

...