优化刷新token

This commit is contained in:
tongfei
2024-03-21 10:11:18 +08:00
parent 12667369d9
commit d814d11690
5 changed files with 22 additions and 16 deletions

View File

@@ -357,14 +357,15 @@ namespace WMS.Web.Domain.Services.Public
/// <summary>
/// 刷新token
/// </summary>
/// <param name="Token"></param>
/// <param name="oldToken"></param>
/// <param name="RefreshToken"></param>
/// <returns></returns>
public async Task<Result<LoginInDto>> RefreshTokenNew(string Token, string RefreshToken)
public async Task<Result<LoginInDto>> RefreshTokenNew(string oldToken, string RefreshToken)
{
//1.根据旧token 找到登录对象
var loginInfo = _redisClientService.GetStringKey<LoginInDto>($"wms_login_{Token}");
_logger.LogInformation($"刷新Token前->" + $"wms_login_{oldToken}");
var loginInfo = _redisClientService.GetStringKey<LoginInDto>($"wms_login_{oldToken}");
var reqData = new LoginAuthorizeRefreshTokenRequest();
reqData.ClientId = _soaOptions.AppId;
reqData.ClientSecret = _soaOptions.AppSecret;
@@ -376,7 +377,6 @@ namespace WMS.Web.Domain.Services.Public
string result = _httpClientHelp.PostHttp(_soaOptions.Url_V3 + "/uc/authorize", reqData);
var jObject = JsonObject.Parse(result);
_logger.LogInformation("刷新后:" + JsonConvert.SerializeObject(jObject));
LoginInDto r = new LoginInDto();
r.UserInfo = new UserInfoDto();
r.TokenInfo = new AccessTokenDto();
@@ -388,12 +388,16 @@ namespace WMS.Web.Domain.Services.Public
r.UserInfo = loginInfo.UserInfo;
r.SignedIn = true;
var token = await CreateToken(loginInfo.UserInfo, _loginDto, Token);
string NewToken = Guid.NewGuid().ToString("N");
var token = await CreateToken(loginInfo.UserInfo, _loginDto, NewToken);
r.TokenInfo = token;
loginInfo.TokenInfo = token;
//_logger.LogInformation("RefreshToken:我在刷新登录:刷新后的过期时间-1>" + token.Expired.ToString());
var ops_login_time = token.Expired.AddDays(1) - DateTime.Now;//用于正式
_redisClientService.SetStringKey<LoginInDto>($"wms_login_{token.Token}", loginInfo, ops_login_time);
_logger.LogInformation($"刷新Token后->" + $"wms_login_{token.Token}");
//移除老的redis缓存
_redisClientService.RemoveStringKey($"wms_login_{oldToken}");
//_logger.LogInformation("RefreshToken:我在刷新登录:刷新后的过期时间-小时->" + ops_login_time.Hours);
return Result<LoginInDto>.ReSuccess(r);
}