public async Task <ApiResultDataUrl <ApiResultTokenData> > RefreshToken([FromBody] RefreshTokenInput input) { var result = new ApiResultDataUrl <ApiResultTokenData>(); var principal = _tokenService.GetPrincipalFromExpiredToken(input.Token); var userId = principal.GetUserId(); //this is mapped to the Name claim by default var storeRefreshToken = await _tokenService.GetRefreshTokenAsync(userId); if (storeRefreshToken != input.RefreshToken) { result.Code = 200; result.Message = "刷新 Token 失败"; result.Url = _frontendSettings.CoreEnvironment.IsDevelopment ? _frontendSettings.CoreEnvironment.DevelopmentHost + "/modules/login.html" : Url.Action("Login", "View"); return(result); } var newToken = _tokenService.GenerateAccessToken(principal.Claims); var newRefreshToken = await _tokenService.GenerateRefreshTokenAsync(userId); result.Data = new ApiResultTokenData { Token = newToken, RefreshToken = newRefreshToken, }; result.Code = 200; result.Message = "刷新 Token 成功"; return(result); }
public async Task <ApiResultDataUrl <ApiResultTokenData> > Login(AccountPasswordValidationCodeLoginInput input) { var result = new ApiResultDataUrl <ApiResultTokenData>(); var validationCode = HttpContext.Session.GetString(ValidationCodeKey); if (validationCode == null) { result.Code = 400; result.Message = "验证码已到期,请重新输入"; return(result); } if (String.Compare(validationCode, input.ValidationCode, StringComparison.OrdinalIgnoreCase) != 0) { result.Code = 400; result.Message = "请输入正确的验证码"; return(result); } HttpContext.Session.Remove(ValidationCodeKey); var userInfo = await _userService.GetNormalUserAsync(input.Account, input.Password); if (userInfo == null) { result.Code = 400; result.Message = "账号或密码错误,或用户状态不允许登录"; return(result); } await _userActionLogService.SaveAsync(new UserActionLogInput { UserId = userInfo.UserId, ActionTypeId = 1, ClientTypeId = input.ClientTypeId, ClientAgent = input.ClientAgent, Remark = "后台登录" }, ModelState); result.Data = await _tokenService.GenerateApiResultTokenData(userInfo); result.Url = _frontendSettings.CoreEnvironment.IsDevelopment ? _frontendSettings.CoreEnvironment.DevelopmentHost + "/modules/index.html" : Url.Action("Index", "View"); result.Code = 200; result.Message = "登录成功"; return(result); }