在aspnet身份中保存数据库中的密码盐?

时间:2016-12-07 13:21:26

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

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

My current AspNetUser table My current AspNetUser table

1 个答案:

答案 0 :(得分:0)

代码

<强> 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。