刷新token方法优化
This commit is contained in:
@@ -565,6 +565,57 @@ namespace WMS.Web.Domain.Services.Public
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 刷新token
|
||||
/// </summary>
|
||||
/// <param name="Token"></param>
|
||||
/// <param name="RefreshToken"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<Result<LoginInDto>> RefreshTokenNew(string Token, string RefreshToken)
|
||||
{
|
||||
|
||||
//1.根据旧token 找到登录对象
|
||||
var loginInfo = _redisClientService.GetStringKey<LoginInDto>($"wms_login_{Token}");
|
||||
var reqData = new LoginAuthorizeRefreshTokenRequest();
|
||||
reqData.ClientId = _soaOptions.AppId;
|
||||
reqData.ClientSecret = _soaOptions.AppSecret;
|
||||
reqData.GrantType = "refresh_token";
|
||||
reqData.RefreshToken = RefreshToken;
|
||||
reqData.Scope = "credentials";
|
||||
string result = _httpClientHelp.PostHttp(_soaOptions.Url_V3 + "/uc/authorize", reqData);
|
||||
var jObject = JsonObject.Parse(result);
|
||||
|
||||
LoginInDto r = new LoginInDto();
|
||||
r.UserInfo = new UserInfoDto();
|
||||
r.TokenInfo = new AccessTokenDto();
|
||||
|
||||
if (jObject["code"] == 0)
|
||||
{
|
||||
string datajson = jObject["data"].ToString();
|
||||
var _loginDto = JsonConvert.DeserializeObject<LoginTempV2Dto>(datajson);
|
||||
|
||||
r.UserInfo = loginInfo.UserInfo;
|
||||
r.SignedIn = true;
|
||||
var token = await CreateToken(loginInfo.UserInfo, _loginDto, Token);
|
||||
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("RefreshToken:我在刷新登录:刷新后的过期时间-小时->" + ops_login_time.Hours);
|
||||
return Result<LoginInDto>.ReSuccess(r);
|
||||
}
|
||||
else
|
||||
{
|
||||
//失败了1:就把登录的token清除 2: ucid添加到黑名单
|
||||
var time = new TimeSpan(r.TokenInfo.Expired.Day, r.TokenInfo.Expired.Hour, r.TokenInfo.Expired.Minute, r.TokenInfo.Expired.Second, r.TokenInfo.Expired.Millisecond);
|
||||
_redisClientService.SetStringKey($"wms_black_token_{r.UserInfo.UcId}", r.TokenInfo.Token, time);
|
||||
this.RemoveLoginInfo(r.TokenInfo.Token);
|
||||
r.SignedIn = false;
|
||||
return Result<LoginInDto>.ReFailure(jObject["errmsg"], jObject["errno"]);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 单点退出通知token失效
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user