Cześć,
C#, NetCore 3.1 - opis problemu:
Na szybko, aby Was nie zanudzać - has'huję bCrypt'em łańcuch znaków (nazwijmy go hasłem - aby było prościej) - następnie chcę zaktualizować pole w tablicy w bazie danych dla konkretnego użytkownika - czasem jednak występują problemy - zwracanym błędem jest System.Net.HttpStatusCode.NotFound (co jest dosyć dziwne) - poniżej testowa funkcja:
public async Task UpdatePasswordUser(string new_password, string username)
{
if (!string.IsNullOrEmpty(token))
{
client.DefaultRequestHeaders.Remove("Authorization");
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
}
var data = JsonConvert.SerializeObject(new Table_test { Password = new_password });
var response_table = await client.PutAsync(_baseUrl + "/api/table_test/changepassword-" + new_password + "-" + username, new StringContent(data, Encoding.UTF8, "application/json"));
if (!response_table.IsSuccessStatusCode)
{
if (response_table.StatusCode == System.Net.HttpStatusCode.Unauthorized)
MessageBox.Show("Error, Code : " + response_table.StatusCode);
MessageBox.Show("Error with update field, Code : " + response_table.StatusCode);
}
}
Po stronie API:
[Authorize]
[HttpPut]
[Route("changepassword-{new_password}-{username}")]
public async Task<IActionResult> ChangePassword(string new_password, string username)
{
return await Task.Run(() =>
{
using (var c = new MySqlConnection(con_sql.MySQL))
{
var sql = @"UPDATE table_test SET password = @password WHERE user = @user";
var query = c.Query<Models.Table_test>(sql, new { Password = new_password, User = username }, commandTimeout: 10);
return Ok(query);
}
});
}
Powiedzmy, że przykładowym hasłem będzie : test444 - za każdym razem ten hash oczywiście finalnie wygląda inaczej - i dziwnym jest, że raz dla tego samego wprowadzanego rekordu (test444) metoda PUT przebiega prawidłowo i aktualizacja pola jest OK - a innym razem nie, mimo, że nadal pierwotnym wyrazem jest hasło : test444
Dowolne pomysły lub sugestie? Bardzo dziękuję i pozdrawiam.
Stworzyłem wątek ponieważ pomyślałem, że ktoś może mieć podobny problem - w razie jeśli podobna tematyka istnieje - to przepraszam i proszę o przekierowanie.