如何有效地将默认的asp.net身份ID转换为字符串类型

时间:2019-10-22 14:17:38

标签: c# entity-framework-core asp.net-identity asp.net-core-2.1

我正在尝试向.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,我希望能够将其转换/覆盖为字符串,以使其符合我的要求

0 个答案:

没有答案