Недавно я решил перейти со строки на GUID в качестве уникального идентификатора для IdentityUser. Я успешно применил миграцию к базе данных, но теперь методы UserManager больше не работают. Поиск пользователя по электронной почте с помощью DbContext работает нормально (DataContext.Users.SingleAsync(...)), но возвращает значение NULL с помощью UserManager(UserManager.FindByIdAsync(...))
Пользователь приложения:
public class ApplicationUser : IdentityUser
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public override Guid Id { get; set; }
}
DbContext:
public class DataContext :
IdentityDbContext,
IDataContext
{
private readonly IUserContextAccessor _userContextAccessor;
public DataContext(DbContextOptions options, IUserContextAccessor userContextAccessor) : base(options)
{
_userContextAccessor = userContextAccessor;
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
Служба профилей (я получаю ошибку внутри метода IsActiveAsync)
public class ProfileService : IProfileService
{
private readonly IUserClaimsPrincipalFactory _claimsFactory;
private readonly UserManager _userManager;
public ProfileService(
UserManager userManager,
IUserClaimsPrincipalFactory claimsFactory)
{
_userManager = userManager;
_claimsFactory = claimsFactory;
}
public async Task GetProfileDataAsync(ProfileDataRequestContext context)
{
...
}
public async Task IsActiveAsync(IsActiveContext context)
{
var sub = context.Subject.GetSubjectId();
var user = await _userManager.FindByIdAsync(sub);
context.IsActive = user != null;
}
}
И, наконец, я регистрирую это так:
services.AddIdentity(options =>
{
options.User.RequireUniqueEmail = true;
})
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
Подробнее здесь: https://stackoverflow.com/questions/787 ... nger-works
Измените ключ IdentityUser со строки на GUID — UserManager больше не работает. ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Вставка GUID в поле «uniqueidentifier» в SQL Server приводит к пустому guid.
Anonymous » » в форуме C# - 0 Ответы
- 90 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Вставка GUID в поле «uniqueidentifier» в SQL Server приводит к пустому guid [закрыто]
Anonymous » » в форуме C# - 0 Ответы
- 77 Просмотры
-
Последнее сообщение Anonymous
-