/// <summary> /// Метод аутентификации, который возвращает JWT токен (При каждой аутентификации генерируется новый JWT токен) /// </summary> /// <param name="username">Логин</param> /// <param name="password">Пароль</param> /// <returns>Возвращает RefreshToken</returns> public async Task <RefreshTokens> Authenticate(string username, string password) { // Ищем пользователя по email User user = await _userManager.FindByEmailAsync(username); // Если пользователь не найден, верни ошибку о том, что такого юзера нет if (user == null) { return(null); } // Иначе, пользователь найден, тогда надо сбросить куки var removed = await UnLoginUser(user); // Далее проходим авторизацию var result = await _signInManager.CheckPasswordSignInAsync(user, password, false); // Если авторизация не прошла успешно, то верни null if (!result.Succeeded) { return(null); } // Теперь генерируем данные для RefreshToken'a var encodedJwt = await GenerateJWT(user); // JWT AcessToken var RefreshToken = GenerateRefreshToken(); // RefreshToken RefreshTokens token = new RefreshTokens { TokenAcess = encodedJwt, IdUser = user.Id, TokenRefresh = RefreshToken, DateLifeStart = DateTime.Now, DateLifeEnd = DateTime.Now.AddDays(10), IsActive = true }; // Добавляем этот токен в хранилище RefreshToken'ов var added = await tokensService.AddToken(token); return(token); // Возвращаем токен }