如何更新 .net core web API 中的散列密码?

指挥官

我将通过 [HttpPut] 操作更新我的散列密码。这是我的模型。

    [Key, DatabaseGenerated (DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public string FullName { get; set; }
    public string UserName { get; set; }

    [NotMapped]
    public string Password { get; set; }

    [Required]
    public byte[] PasswordHash { get; set; }

    [Required]
    public byte[] PasswordSalt { get; set; }

    public byte UserRole { get; set; }

这是我的控制器

    [HttpPut("{Id}")]
    public async Task<IActionResult> PutUser([FromRoute] int Id, [FromBody] TheUser user)
    {
        if (Id != user.Id)
        {
            return BadRequest();
        }
        CreatePasswordHash(user.Password, out byte[] passwordHash, out byte[] passwordSalt);
        _context.Entry(user).State = EntityState.Modified;
        user.PasswordHash = passwordHash;
        user.PasswordSalt = passwordSalt;
        
        
        try
        {
            await _context.SaveChangesAsync();
        }
        catch (DbUpdateConcurrencyException)
        {
            if (_context.TheUser.Find(Id) == null)
            {
                return NotFound();
            }
            throw;
        }
        catch
        {
            return BadRequest();
        }
        return NoContent();
    }

    private void CreatePasswordHash(string password, out byte[] passwordHash, out byte[] passwordSalt)
    {
        using (var hmac = new System.Security.Cryptography.HMACSHA512())
        {
            passwordSalt = hmac.Key;
            passwordHash = hmac.ComputeHash(System.Text.Encoding.UTF8.GetBytes(password));
        }
    }

当我运行应用程序时,我收到以下错误:

错误

事实上,我将在不知道以前的密码的情况下重置用户的密码。但问题是两个变量“passwordHash”和“passwordSalt”没有得到值。

M.莫哈巴蒂

您创建了这两个属性Required,因此您必须将值传递给它们。

您可以Required轻松删除属性或将空字符串传递给这些属性,并在插入db后使用其他操作或方法更新它们

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何停止.Net Core Web API中的自引用循环?

如何从Singleton类访问Net Core Web API中的IHubContext

如何在.net Core Web API中构造数据验证?

如何在Net Core Web API中覆盖OnAuthorization?

如何在.NET Core Web API中配置并发?

如何从.Net Core Web API返回Unathorized

如何从.Net Core Web API返回Json?

.Net Core Web API

.NET Core 2.0 Web API中的BSON

如何从Web API调用ASP.NET Core Web MVC

如何限制 .Net Core Web API 中的并发外部 API 调用?

.NET Core Web API密钥

AWS API Gateway to .NET Core Web Api 在 ECS 中运行

我如何使用 c# 在 asp.net web api(不是 .net core)中实现 api 网关

NET Core中如何解决Web API构造函数中的依赖关系

ASP.NET Core Web API如何构建URL?

如何从ASP.NET Core Web API返回304结果?

如何使ASP.NET Core Web API操作异步执行?

如何使用WEB API Dot net core实现文件上传?

如何在ASP.NET Core 2中对Facebook Web API进行身份验证

如何在ASP.NET Core Web API中绑定Json查询字符串

如何在运行于ASP.NET Core 3.1的启用OData的Web API中添加Swagger

如何在中间件.Net Core Web API中获取当前的User / ClaimsPrincipal

在 ASP.NET Web API Core 中,如何强制 401 响应

如何在.NET Core Web API中获取当前用户(来自JWT令牌)

如何从 .net core 中的 web api 响应读取标头数据?

如何在 .Net Core 中为 web api ajax 调用启用 cors

如何在ASP.NET Core Web API中配置JSON格式缩进

如何从 C# .net core web api JsonResult 响应中删除 BOM?