C# ASP.NET标识与自定义;“用户”;桌子

C# ASP.NET标识与自定义;“用户”;桌子,c#,asp.net,nhibernate,asp.net-mvc-5,owin,C#,Asp.net,Nhibernate,Asp.net Mvc 5,Owin,我想使用OWIN。但是我需要用户表中的更多列。我还想使用NHibernate 这样做的方法是什么? 从OWIN扩展用户表。我不知道这是否可能。其次,我不知道是否会出现缓存问题 或者,我为自己的用户数据创建了第二个用户表,其中“UserID”属性作为外键引用OWIN?的用户表。我想说,无论如何都要使用Asp.NET标识。如果您想为应用程序用户添加更多属性,可以按如下方式添加它们: public class ApplicationUser : IdentityUser { public as

我想使用OWIN。但是我需要用户表中的更多列。我还想使用
NHibernate

这样做的方法是什么? 从
OWIN
扩展用户表。我不知道这是否可能。其次,我不知道是否会出现缓存问题


或者,我为自己的用户数据创建了第二个用户表,其中“UserID”属性作为外键引用
OWIN

的用户表。我想说,无论如何都要使用Asp.NET标识。如果您想为
应用程序用户
添加更多属性,可以按如下方式添加它们:

public class ApplicationUser : IdentityUser
{
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
    {
        // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
        // Add custom user claims here
        return userIdentity;
    }

    // Your Extended Properties
    public string FirstName{ get; set; }
    public string LastName{ get; set; }
    //...
}
公共类应用程序用户:IdentityUser
{

公共异步任务GenerateUserIdentityAsync(UserManager.

这正是Identity的设计目的:可扩展性。如果您想要在
ApplicationUser
上添加额外属性,只需添加它们。它与任何其他实体一样。Owin与身份或身份验证一般无关。Identity只是碰巧作为Owin中间件运行。好的。如果我有表,谁没有呢参考用户表(反之亦然)哪个是独立于ApplicationUser的完整实体?我必须使用NHibernate来获取数据?@Xeddon您在identity和ApplicationUser下拥有的任何内容都由其自己的DbContext处理,如果您有其他与ApplicationUser无关的表,则由您自己的ORM处理,但是如果您想在这些表中拥有用户ID,则由您自己的ORM处理您可以很容易地将它们作为外键映射到NHibernate中的ApplicationUser表。但是使用我的ORM从ApplicationUser操作属性是很好的吗?也许我会遇到缓存问题?(我从ORM操作,而不是从标识操作,再次从ORM操作)@Xeddon Identity model有自己的ORM,它与实体框架分开安装,我建议使用自己的ORM来操作自己的表和数据。