C# 自定义ASP.NET标识
我必须自定义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
<!-- 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,
};
退货经理;
}
}
我已编辑了您的标题。请参阅“”,其中的共识是“不,他们不应该”。