首页 > 解决方案 > C# - API - 更新字段的问题 - PUT 方法 - 复杂的哈希

问题描述

我有一个有趣而奇怪的问题——我有一个函数可以修改数据库中用户的密码。密码哈希 bCrypt - 通常 PUT 方法工作一次,一旦它不起作用 - 可能是什么原因?下面的代码 - 感谢您的提示。

桌面程序-功能:

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, Code : " + response_table.StatusCode);
        }
    }

接口:

 [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: 60);
                return Ok(query);
            }
        });
    }

例如:用户 - test12345 新密码 - $2b$06$KiL6aoxxl8ulZ1rQzE1HQnrGLCOq9JM0NUiL5FOSkOvdT.9md8cW

也许问题在一边: new StringContent(data, Encoding.UTF8, "application/json") ?

感谢您的建议。

标签: c#apihashput

解决方案


推荐阅读