【问题标题】:Save password salt in database in aspnet identity?在 aspnet 身份中的数据库中保存密码盐?
【发布时间】:2016-12-07 13:21:26
【问题描述】:

我正在使用 aspnet 身份在我的 asp.net WebAPI 应用程序中创建、更新删除、登录和注销新用户。当我创建新用户时,它会自动将 PasswordHash 和安全标记存储在数据库中。但现在我想将密码盐字符串存储在数据库中。我已经搜索了很多但无法做到。是否可以通过使用 aspnet 身份来节省盐?如果是那怎么办?

My current AspNetUser table

【问题讨论】:

  • 只需连接盐和哈希,并将它们存储在 PasswordHash 列中。
  • 您需要实施第二轮加盐的任何特殊原因?除了默认的盐实现?

标签: c# entity-framework-6 asp.net-identity


【解决方案1】:

代码优先

1.创建应用用户类

您需要创建一个继承自 IdentityUser 的类。

 public class ApplicationUser : IdentityUser
    {
        public string UserSalt {get;set;}    
    }

2。上下文

然后你需要调整你的模型(假设你首先使用 EF 代码)。

您的应用程序上下文(您也可以为 ApplicationRole 创建一个特殊的类):

 public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, string> {...}

^ 以防万一您的应用程序是身份提供者并且您的应用程序上下文代表您的身份上下文。

3.调整模型

向模型构建器添加属性:

 modelBuilder.Entity("IdentityProvider.Models.ApplicationUser", b =>
{
...
  b.Property<string>("UserSalt");
... 
}

4.调整关系

还要确保在代码中将 IdentityUser 作为实体名称的任何地方都将其切换为 ApplicationUser。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 2012-04-03
    • 2017-06-19
    • 2021-03-18
    相关资源
    最近更新 更多