c# - 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") ?
感谢您的建议。
解决方案
推荐阅读
- qt - 为什么 QDeclarativeGeoMap::visibleRegion 在 QtLocation Map 中是不可通知的?
- typescript - 基于 2 个枚举创建联合类型
- mysql - XAMPP 致命错误:超过 30 秒的最大执行时间
- string - 如何在字符串变量中识别变量?
- python - AttributeError:“contactObject”对象没有属性
- hyperledger-fabric - 缺少“未能达到 1 个子策略的隐式阈值,需要剩余 1 个”的日志
- c# - 更新/刷新 ListView 或 ListView 项目而不从顶部开始
- javascript - 如何创建一个可以用仿射矩阵缩放/平移的 paper.js Path.Circle,但保持圆半径始终固定?
- excel - Excel VBA 从嵌套函数中提取值
- java - 在 Play Framework 中使用 Java 访问公共资产