ASPNET.Identity和MVC5

时间:2013-11-19 12:13:34

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

我正在尝试使用新的Identity和MVC5构建身份验证,但我想“加入”一个单独的用户表来注册和管理页面。我已经阅读了很多关于扩展AspNetUser表的内容,但我非常想找到如何加入一个单独的表。我不想只是将字段添加到AspNetUser表,因为这个项目将成为其他网站应用程序的模板,并且每个项目对用户表有不同的要求,因此我相信如果我可以调整一个单独的表,它将更加简化而不是不断更改AspNetUser表。

任何代码示例都会非常受欢迎,因为我通过示例学习比解释更好!

亚历

2 个答案:

答案 0 :(得分:1)

@Alex这是什么,它对我有用

这创建了一个自定义用户类,它继承自IdentityUser,就像ApplicationUser一样。它还定义了一个虚拟类,它是在数据库中创建用户时链接的关联配置文件类。这可以在这里作为一个自定义解决方案来完成,使它使用现有的表,你只需用数据库中的实体对象替换这里的对象,并使用指向正确数据库的连接字符串。

  public class CustomUser : IdentityUser
  {
      public virtual CustomUserProfile CustomUserProfile { get; set; }
  }
  public class CustomUserProfile
  {

    [Key]
    public Guid Id
    {
        get { return Guid.NewGuid(); }
        private set { value = Id; }
    }

    public string FirstName { get; set; }
    public string LastName { get; set; }
   //add more items

}
public class ApplicationDbContext : IdentityDbContext<CustomUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {
    }
    public System.Data.Entity.DbSet<CustomUserProfile> CustomUserProfile { get; set; }
}

现在在控制器中我有:

 public AccountController()
        : this(new UserManager<CustomUser>(new UserStore<CustomUser>(new ApplicationDbContext())))
    {
    }

    public AccountController(UserManager<CustomUser> userManager)
    {
        UserManager = userManager;
    }

    public UserManager<CustomUser> UserManager { get; private set; }

这将使用继承自IdentityUser的自定义用户创建一个新的UserManager对象,就像ApplicationUser那样。

添加新用户的方法有:

      var user = new CustomUser() { UserName = model.UserName };
                user.CustomUserProfile = new CitadelUserProfile();
                user.CustomUserProfile.FirstName = model.FirstName;


                var result = UserManager.Create(user, model.Password);

如果您仍然遇到迁移问题,那么您可以删除MDF文件并重新运行该应用程序,它将重新创建数据库。

答案 1 :(得分:0)

由于ASP.NET Identity使用EF Code First,您可以通过添加新的Code First类并将其添加到DbContext来将您的配置文件存储为单独的表。以下文章介绍了如何执行此操作http://blogs.msdn.com/b/webdev/archive/2013/10/16/customizing-profile-information-in-asp-net-identity-in-vs-2013-templates.aspx