我正在尝试向.NET Core 2.1中的API添加身份验证和授权。一切工作都很好。但是,当我尝试登录用户时,在测试环境中出现此错误:“读取属性'IdentityUser.Id'的数据库值时发生异常。预期的类型为'System.String',但实际值为类型为“ System.Guid””。
我尝试将id的数据类型覆盖为字符串,但对我没有任何帮助。我还尝试过删除表格并重新创建,但均无济于事。
ApplicationUser模型:
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,我希望能够将其转换/覆盖为字符串,以使其符合我的要求