public async Task <IActionResult> GetUserFromDb([FromBody] UserSignIn user) { User userobj = new User(); if (user.Login == null || user.Password == null) { throw new ArgumentNullException(); } // Хэширует пароль для сравнения зашифрованных паролей string checkHashString = await HashMD5Service.HashPassword(user.Password); // Сравнивает хэши var isEqual = await EqualsHash(user.Login); if (isEqual != checkHashString) { return(ErrorViewModel.ErrorEqualHash()); } // Проверяет, есть ли пользователь в БД var identity = await GetIdentity(user.Login, isEqual); // Если пользователь найден, то получаем его ID if (identity != null) { userobj = db.Users.FirstOrDefault(x => x.Login == user.Login); } var now = DateTime.UtcNow; if (identity == null) { return(ErrorViewModel.ErrorToken()); } // Создание JWT-токена var jwt = new JwtSecurityToken( issuer: AuthOptions.ISSUER, audience: AuthOptions.AUDIENCE, notBefore: now, claims: identity.Claims, expires: now.Add(TimeSpan.FromMinutes(AuthOptions.LIFETIME)), signingCredentials: new SigningCredentials(AuthOptions.GetSymmetricSecurityKey(), SecurityAlgorithms.HmacSha256)); var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt); // Объект анонимного типа с токеном, который отсылается на фронт var response = new { access_token = encodedJwt, userName = identity.Name, id = userobj.Id }; return(Json(response)); }