public User Login(string email, string password) { User userResponse = null; //--- validação dos parâmetros _userValidation.ValidateEmail(email); _userValidation.ValidatePassword(password); //--- verifica se o usuário esta em cache var userCache = _memoryCache.Get <User> ($"userEmail-{email}"); if (userCache == null) { //--- faz o login, verifica se logou userResponse = _userRepository.Login(email, password); //--- grava o usuário em cache por email _memoryCache.Set <User> ($"userEmail-{userResponse.Email}", userResponse); } else { userResponse = userCache; } //--- verifica se o usuário esta logado _userValidation.IsLogged(userResponse, password); //--- cria o token para esta sessão userResponse.Token = CreateToken(); //--- grava o usuário em cache por id para a autenticacao dos usuários nos httprequest _memoryCache.Set <User> ($"userId-{userResponse.Id}", userResponse, DateTimeOffset.Now.AddHours(12)); return(userResponse); }