如何解决.Net Core 3.1身份自定义UserManager FindByIdAsync方法
我一直在尝试使用UserManager和RoleManager。我实现了具有 int主键的身份类。
例如,当我想使用UserManager FindByIdAsync方法时,它仍然是必需的字符串userId参数,但是我想使用int参数。我该如何更改?实际上,我之前没有自定义UserManager或UserStore。
除了所有这些,我还使用LinqToDB.Identity。
var appUser = _userService.FindByIdAsync(); //must be used an int parameter
这是我的AppUser类。
public class AppUser : IdentityUser<int>,IEntity
{
[required,Identity]
[Key]
public override int Id { get => base.Id; set => base.Id = value; }
public DateTime CreatedDate { get; set; }
public DateTime? ModifiedDate { get; set; }
public int? CreatedBy { get; set; }
public int? ModifiedBy { get; set; }
public int? StatusId { get; set; }
}
这是我的AddLinqToDBStores实现。
/// <summary>
/// Adds authentication service
/// </summary>
/// <param name="services">Collection of service descriptors</param>
public static void AddDevPlatformAuthentication(this IServiceCollection services,IConfiguration configuration)
{
services.AddIdentity<AppUser,AppRole>(options =>
{
options.Password.requiredigit = true;
options.Password.requiredLength = 4;
options.Password.RequireNonAlphanumeric = false;
options.Password.RequireUppercase = true;
options.Password.RequireLowercase = false;
options.User.RequireUniqueEmail = true;
options.SignIn.RequireConfirmedEmail = false;
//Todo
//options.User.RequireUniqueEmail = true;
//options.Lockout.MaxFailedAccessAttempts = 5;
//options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(3);
}).AddLinqToDBStores<int,AppUserClaim,AppUserRole,AppUserLogin,AppUserToken,AppRoleClaim>(new
IdentityConnectionFactory(new sqlServerDataProvider(ProviderName.sqlServer,sqlServerVersion.v2017),"sqlServerIdentity",DataSettingsManager.LoadSettings().ConnectionString))
.AddUserStore<LinqToDB.Identity.UserStore<int,AppUser,AppRole,AppUserToken>>()
.AddUserManager<UserManager<AppUser>>()
.AddRoleManager<RoleManager<AppRole>>()
.AddDefaultTokenProviders();
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie();
// Uncomment the following lines to enable logging in with third party login providers
JwtTokenDeFinitions.LoadFromConfiguration(configuration);
services.ConfigureJwtAuthentication();
services.ConfigureJwtAuthorization();
}
_userManager.FindByIdAsync()如我所说,我需要对所有userManager和roleManager方法使用 int参数。
我该如何处理?
最好的问候
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。