一,如:ASP.NET Identity简介
默认情况下,ASP.NET Identity 系统将所有用户信息存储在数据库中。ASP.NET Identity 使用 Entity Framework Code First 来实现其所有的持久性机制。
现在,IdentityUser 类将映射到数据库中的 AspNetUsers 表,因此让我们通过创建一个继承自它的新类并添加我们的自定义属性来扩展它:
public class CustomUser : IdentityUser
{
public string Email { get; set; }
}
然后你应该让 UserManager 类使用 CustomUser 而不是 IdentityUser 类,所以在 Startup.cs 中,将 UserManager 和 UserStore 的泛型类型更改为:
UserManagerFactory = () => new UserManager<CustomUser>(new UserStore<CustomUser>());
还有财产:
public static Func<UserManager<CustomUser>> UserManagerFactory { get; set; }
在 ApplicationOAuthProvider.cs 和解决方案中的任何地方,对 UserManager 的泛型类型进行相同的更改,并开始使用 CustomUser 而不是 IdentityUser 。您可以将新的“电子邮件”属性添加到 RegisterBindingModel,如下所示:
public class RegisterBindingModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
public string Email { get; set; }
}
然后在注册时,您可以添加价值:
CustomUser user = new CustomUser
{
UserName = model.UserName,
Email=model.Email
};
我希望它会有所帮助
更新
如果有人收到 ExceptionMessage “无效的列名‘鉴别器’。” 这意味着在按照我的步骤之前已经创建了“AspNetUsers”,并且该表没有“Discriminator”列,所以你应该做的就是进入数据库,通过添加一个新的类型来更改 AspNetUsers 表的设计作为 nvarchar(128)(在我的示例中还添加一个您想要的新列,例如 Email),并将其命名为 Discriminator ,并且不要忘记用适当的值填充旧记录的此列的字段(在我的例如它将是 CustomUser)。