Tôi đang cố gắng định cấu hình xác thực và ủy quyền bằng cơ sở dữ liệu và bảng hiện có của mình mà không cần sử dụng Entity Framework (sử dụng Dapper).Xác thực và ủy quyền không có khung thực thể trong ASP.NET 5 MVC 6
Tôi đã định cấu hình Dapper chính xác, bây giờ tôi đang cố gắng kết nối SignInManager và UserManager để gọi cơ sở dữ liệu của tôi qua Dapper, nhưng trước khi điều đó có thể xảy ra, tôi đang gặp một số lỗi với vai trò tùy chỉnh của mình cửa hàng.
Dưới đây là những lỗi mà tôi nhận được khi tôi nhấp vào nút "Đăng ký" trên trang web (đây chỉ là một dự án đơn giản với tất cả các tài khoản được xác định trước vv thứ out of the box)
InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNet.Identity.IRoleStore`1[TestAsyncWebsite.Configuration.WrestleStatRole]' while attempting to activate 'Microsoft.AspNet.Identity.RoleManager`1[TestAsyncWebsite.Configuration.WrestleStatRole]'
Cho đến nay, đây là cách tôi đã cấu hình người dùng tùy chỉnh, vai trò, userstore, vai trò lưu trữ, UserManager, và rolemanager tôi:
public class WrestleStatUser : ApplicationUser
{
public WrestleStatUser() : base()
{
}
}
public class WrestleStatRole : IdentityRole
{
}
public class WrestleStatUserStore : IUserStore<WrestleStatUser>
{
// all methods implemented
}
public class WrestleStatRoleStore : IRoleStore<WrestleStatRole>
{
// all methods implemented
}
public class WrestleStatUserManager : UserManager<WrestleStatUser>
{
public WrestleStatUserManager(IUserStore<WrestleStatUser> store, IOptions<IdentityOptions> optionsAccessor, IPasswordHasher<WrestleStatUser> passwordHasher, IEnumerable<IUserValidator<WrestleStatUser>> userValidators, IEnumerable<IPasswordValidator<WrestleStatUser>> passwordValidators, ILookupNormalizer keyNormalizer, IdentityErrorDescriber errors, IEnumerable<IUserTokenProvider<WrestleStatUser>> tokenProviders, ILogger<UserManager<WrestleStatUser>> logger, IHttpContextAccessor contextAccessor)
: base(store, optionsAccessor, passwordHasher, userValidators, passwordValidators, keyNormalizer, errors, tokenProviders, logger, contextAccessor)
{
}
}
public class WrestleStatRoleManager : RoleManager<WrestleStatRole>
{
public WrestleStatRoleManager(IRoleStore<WrestleStatRole> store, IEnumerable<IRoleValidator<WrestleStatRole>> roleValidators, ILookupNormalizer keyNormalizer, IdentityErrorDescriber errors, ILogger<RoleManager<WrestleStatRole>> logger, IHttpContextAccessor contextAccessor) : base(store, roleValidators, keyNormalizer, errors, logger, contextAccessor)
{
}
}
và đây là startup.cs tôi:
services.AddIdentity<WrestleStatUser, WrestleStatRole>()
.AddUserStore<WrestleStatUserStore>()
.AddUserManager<WrestleStatUserManager>()
//.AddRoleStore<RoleStore>()
.AddRoleManager<WrestleStatRoleManager>()
.AddDefaultTokenProviders();
Tôi thiếu gì ở đây? Lỗi nói điều gì đó về RoleManager, tôi đã xác định RoleManager tùy chỉnh của mình ...