C# 自定义ASP.NET标识

C# 自定义ASP.NET标识,c#,asp.net,asp.net-identity,C#,Asp.net,Asp.net Identity,我必须自定义ASP.NET标识实体 我有以下课程: <!-- language: c# --> public class ApplicationUser: IdentityUser<string, ApplicationLogin, ApplicationUserRole, ApplicationClaim> {} public class: UserStore<ApplicationUser, ApplicationRole, string, Applicat

我必须自定义ASP.NET标识实体

我有以下课程:

<!-- language: c# -->

public class ApplicationUser: IdentityUser<string, ApplicationLogin, ApplicationUserRole, ApplicationClaim> {}

public class: UserStore<ApplicationUser, ApplicationRole, string, ApplicationLogin, ApplicationUserRole, ApplicationClaim> {}

public class ApplicationUserManager: UserManager<ApplicationUser>
{
    public ApplicationUserManager(IUserStore<ApplicationUser> store)
        : base(store)
    {}
}

公共类应用程序用户:IdentityUser{}

公共类:UserStore。

您需要创建一些其他类和接口:

public interface IApplicationUserStore : IUserStore<ApplicationUser, string>
{

}

public class ApplicationUserStore :
    UserStore<ApplicationUser, ApplicationRole, Guid, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>,
    IApplicationUserStore
{
    public ApplicationUserStore()
        : base(new ApplicationDbContext())
    {

    }

    public ApplicationUserStore(ApplicationDbContext context)
        : base(context)
    {

    }
}
公共接口IApplicationUserStore:IUserStore
{
}
公共类ApplicationUserStore:
用户商店,
IApplicationUserStore
{
公共应用程序存储库()
:base(新的ApplicationDbContext())
{
}
公共ApplicationUserStore(ApplicationDbContext上下文)
:基本(上下文)
{
}
}
并创建类ApplicationDbContext

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, string, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
{
    public ApplicationDbContext()
        : base("AuthenticationConnectionString")
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
    ...
}
public类ApplicationDbContext:IdentityDbContext
{
公共应用程序上下文()
:base(“AuthenticationConnectionString”)
{
}
公共静态应用程序上下文创建()
{
返回新的ApplicationDbContext();
}
...
}
然后,您可以从ApplicationUserManager调用

var manager = new ApplicationUserManager(new ApplicationUserStore(context.Get<ApplicationDbContext>()));
var-manager=newapplicationUserManager(newapplicationUserStore(context.Get());
这是在构造函数中接收IAApplicationUserStore的完整类ApplicationUserManager:

public class ApplicationUserManager : UserManager<ApplicationUser, Guid>
    {
        public ApplicationUserManager(IApplicationUserStore store)
            : base(store)
        {
        }

        public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
        {
            var manager = new ApplicationUserManager(new ApplicationUserStore(context.Get<ApplicationDbContext>())) { PasswordHasher = new CustomPasswordHasher() };

            // Configure validation logic for passwords
            manager.PasswordValidator = new PasswordValidator
            {
                RequiredLength = 6,
                RequireNonLetterOrDigit = false,
                RequireDigit = true,
                RequireLowercase = true,
                RequireUppercase = false,
            };

            return manager;
        }
    }
公共类应用程序管理员:用户管理员
{
公共ApplicationUserManager(IApplicationUserStore存储)
:基地(商店)
{
}
公共静态应用程序SerManager创建(IdentityFactoryOptions选项,IOwinContext上下文)
{
var manager=new ApplicationUserManager(new ApplicationUserStore(context.Get()){PasswordHasher=new CustomPasswordHasher()};
//配置密码的验证逻辑
manager.PasswordValidator=新密码验证器
{
所需长度=6,
RequiredOnletterDigit=false,
RequireDigit=true,
RequireLowercase=true,
RequireUppercase=false,
};
退货经理;
}
}

我已编辑了您的标题。请参阅“”,其中的共识是“不,他们不应该”。