public async Task <ActionResult> Login(LoginInputDto model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = await _userManager.FindByEmailAsync(model.Email); if (user == null) { return(NotFound()); } var isAuthenticated = await _userManager.CheckPasswordAsync(user, model.Password); if (!isAuthenticated) { return(StatusCode(StatusCodes.Status401Unauthorized)); } var refreshToken = _tokenFactory.GenerateToken(); user.RefreshToken = refreshToken; await _userManager.UpdateAsync(user); var response = new LoginOutputDto( await _jwtFactory.GenerateEncodedToken(user.Id, user.UserName), refreshToken, true); return(Ok(response)); }
public async Task <ActionResult> RefreshToken(RefreshTokenInputDto dto) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = await _userManager.FindByEmailAsync(dto.Email); if (user == null) { return(NotFound()); } if (user.RefreshToken != dto.RefreshToken) { return(BadRequest("Invalid refresh token")); } var newToken = await _jwtFactory.GenerateEncodedToken(user.Id, user.UserName); var newRefreshToken = _tokenFactory.GenerateToken(); user.RefreshToken = newRefreshToken; await _userManager.UpdateAsync(user); var response = new LoginOutputDto(newToken, newRefreshToken, true); return(Ok(response)); }
/// <summary> /// 保存客户端 /// </summary> /// <param name="dto"></param> /// <returns></returns> public bool SaveClientInfo(LoginOutputDto dto) { if (_Cache.Keys.Contains("ClientInfo")) { _Cache.Remove("ClientInfo"); } return(_Cache.Add("ClientInfo", dto)); }
public virtual LoginOutputDto Login(LoginInputDto vm) { LoginOutputDto result = null; var userId = this.GetUserIdForValue(vm.Account); if (!string.IsNullOrEmpty(userId)) { var userDto = userRepository.Get(userId); if (userDto.Account == "admin" && string.IsNullOrEmpty(userDto.Password)) { userDto.Password = EncryptUtils.Encrypt("admin"); userRepository.UpdatePassword(userDto.Id, userDto.Password); } if (userDto.Status == UserStatus.Disabled) { LogUtils.Info($"【登录】{userDto.Name}({userDto.Account}) 已被禁用,登录失败!"); throw new ApiException(ApiStatus.Error, "账号已被禁用, 请与管理员联系!"); } if (!string.IsNullOrEmpty(userDto.Password)) { var pwd = EncryptUtils.Decrypt(userDto.Password); pwd = EncryptUtils.Md5(pwd); pwd = EncryptUtils.Md5($"{pwd}|{vm.Random}"); if (string.Equals(vm.Password, pwd, StringComparison.OrdinalIgnoreCase)) { result = new LoginOutputDto() { Id = userDto.Id, RoleId = userDto.RoleId, Account = userDto.Account, Name = userDto.Name }; } } } return(result); }