2015-01-16 4 views
0

У меня есть этот код:Как проверить, совпадает ли старый пароль, прежде чем его изменить?

//Update login query 
string sql = "ALTER LOGIN " + login.ToUpper() + " WITH PASSWORD = '" + password + "' OLD_PASSWORD = '" + oldpassword + "'"; 

//Try connection and execute 
using (SqlConnection connection = new SqlConnection(GetConnection())) 
{ 
    connection.Open(); 

    SqlCommand command = new SqlCommand(sql, connection); 
    command.CommandType = System.Data.CommandType.Text; 
    var result = command.ExecuteScalar(); 
    connection.Close(); 
} 

Этот SQL запрос изменения пароля логина в базе данных. Обратите внимание, что для продолжения требуется старый пароль. Хотя, если я прохожу неправильный старый пароль, то он бросает SQLException:

Невозможно изменить логин «SEVA», поскольку он не существует или у вас нет разрешения.

Как проверить правильность старого пароля перед выполнением этого запроса, чтобы я мог показать пользователю сообщение об ошибке?

+4

Не думаю, что вы можете. Лучшее, что вы можете сделать, это попытаться сменить пароль, как вы уже это сделали, затем поймать исключение и сообщить пользователю, если он не сработал. –

+0

Зачем проверять перед запросом? Вы знаете, что такое исключение, просто действуйте на основе успеха или исключения. – KevenDenen

+0

Оформить заказ на предыдущую публикацию Stackoverflow и просмотреть принятый ответ здесь - http://stackoverflow.com/questions/19308801/update-a-password-if-user-name-and-old-password-match || http://stackoverflow.com/questions/26256351/encrypt-passwords-on-sql-server-2008-using-sha1 – MethodMan

ответ

1

Попробуйте это. Вам нужно добавить что-то в уловку, чтобы сообщить пользователю, что он не указал правильный пароль.

 //Update login query 
     string sql = "ALTER LOGIN " + login.ToUpper() + " WITH PASSWORD = '" + password + "' OLD_PASSWORD = '" + oldpassword + "'"; 

     try { 
     //Try connection and execute 
     using (SqlConnection connection = new SqlConnection(GetConnection())) 
     { 
      connection.Open(); 

      SqlCommand command = new SqlCommand(sql, connection); 
      command.CommandType = System.Data.CommandType.Text; 
      var result = command.ExecuteScalar(); 
      connection.Close(); 
     } 
    } 
    catch(SQLException) 
    { 
//Do something here to tell the user something went wrong 
    } 
Смежные вопросы