Я пытаюсь добавить аутентификацию и авторизацию в свой API в .NET core 2.1. Все работало отлично. Однако, когда я пытаюсь войти в систему пользователя, я получаю эту ошибку в своей тестовой среде: «Произошло исключение при чтении значения базы данных для свойства« IdentityUser.Id ». Ожидаемый тип был «System.String», но фактическое значение был типа «System.Guid».
Я попытался переопределить тип данных идентификатора для строки, но у меня ничего не получилось. Я также пытался сбросить таблицы и воссоздать их, но ничего не получилось.
Модель пользователя приложения:
public class ApplicationUser : IdentityUser
{
public override string Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
Вот как я подписываю пользователя:
public async Task<object> Login ([FromBody] LoginModel model)
{
try
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
//use signin manager to handle user sign in
//the error shows up in this method
var signin = await _signInManager.PasswordSignInAsync(model.Email, model.Password, false, false);
if (signin.Succeeded)
{
var appuser = _userManager.Users.SingleOrDefault(u => u.Email == model.Email);
return await GenerateJwtToken(model.Email, appuser);
}
}
catch(Exception ex)
{
return ex.Message;
}
throw new ApplicationException("INVALID LOGIN ATTEMPT");
// return BadRequest("no login detail found");
}
Это моя модель входа
public class LoginModel
{
[Required]
public string Email { get; set; }
[Required]
public string Password { get; set; }
}
Я знаю, что тип identityuser.id по умолчанию — guid, и я хочу иметь возможность преобразовать/переопределить его в строку, чтобы он соответствовал моему требованию.