优化刷新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

@@ -44,13 +44,15 @@ namespace WMS.Web.Api.Controllers
private readonly IInStockTaskRepositories _inStockTaskRepositories; private readonly IInStockTaskRepositories _inStockTaskRepositories;
private readonly IOutStockService _outStockService; private readonly IOutStockService _outStockService;
private readonly IWebHostEnvironment _env; private readonly IWebHostEnvironment _env;
private readonly ILoginService _loginService;
private readonly AppOptions _options; private readonly AppOptions _options;
public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBoxInventoryRepositories boxInventoryRepositories, public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBoxInventoryRepositories boxInventoryRepositories,
IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService, IBasicsRepositories basicsRepositories, IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService, IBasicsRepositories basicsRepositories,
IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService, IOptions<AppOptions> options, IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService, IOptions<AppOptions> options, ILoginService loginService,
ITakeStockService takeStockService, ITakeStockRepositories takeStockRepositories, IOutStockService outStockService, IInStockTaskRepositories inStockTaskRepositories, ITakeStockService takeStockService, ITakeStockRepositories takeStockRepositories, IOutStockService outStockService, IInStockTaskRepositories inStockTaskRepositories,
IWebHostEnvironment env) IWebHostEnvironment env)
{ {
_loginService = loginService;
_inStockTaskRepositories = inStockTaskRepositories; _inStockTaskRepositories = inStockTaskRepositories;
_basicsRepositories = basicsRepositories; _basicsRepositories = basicsRepositories;
_options = options?.Value; _options = options?.Value;
@@ -322,10 +324,10 @@ namespace WMS.Web.Api.Controllers
[Route("lst2")] [Route("lst2")]
public async Task<string> Lst2() public async Task<string> Lst2()
{ {
var ids = new List<int>(); var oldtoken = "3d046dc06a3f4f1ebcda93e921012c82";
ids.Add(1); var retoken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MTEwNzIwNjksImlhdCI6MTcxMDk4NTY2OSwianRpIjoiMDA1NTFmM2ItNDQ5Ny00NzU1LTljNGQtNTNiODUxMDBjOTk5In0.XjHDfHhqvfap5MZPqTd45zi1L2_mgxu-lLnyqTKrhD0";
var result = await _inStockTaskRepositories.GetList(ids); await _loginService.RefreshTokenNew(oldtoken, retoken);
return JsonConvert.SerializeObject(result); return "";
} }
} }
} }

View File

@@ -28,7 +28,7 @@
}, },
"SoaOptions": { "SoaOptions": {
"ModuleID": 25, "ModuleID": 25,
"Url_V3": "http://dev.uc.v3.f2b211.com", //<2F><>ʽhttp://uc.v3.f2b211.com "Url_V3": "https://dev.uc.v3.f2b211.com", //<2F><>ʽhttp://uc.v3.f2b211.com
"Url": "http://dev.uc.f2b211.com", "Url": "http://dev.uc.f2b211.com",
"AppId": "100528847652388864", "AppId": "100528847652388864",
"AppSecret": "fa950a1fe690fe610338084b49db7db9", "AppSecret": "fa950a1fe690fe610338084b49db7db9",

View File

@@ -5333,7 +5333,7 @@
<summary> <summary>
刷新token 刷新token
</summary> </summary>
<param name="Token"></param> <param name="oldToken"></param>
<param name="RefreshToken"></param> <param name="RefreshToken"></param>
<returns></returns> <returns></returns>
</member> </member>

View File

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

View File

@@ -100,11 +100,11 @@ namespace WMS.Web.Repositories.DependencyInjection
if (!string.IsNullOrEmpty(logininfo.TokenInfo.Token) && logininfo.TokenInfo.Expired.AddMinutes(-10) <= DateTime.Now) if (!string.IsNullOrEmpty(logininfo.TokenInfo.Token) && logininfo.TokenInfo.Expired.AddMinutes(-10) <= DateTime.Now)
{ {
TimeSpan _refreshThreshold = TimeSpan.FromMinutes(10); //TimeSpan _refreshThreshold = TimeSpan.FromMinutes(10);
var ttt = logininfo.TokenInfo.Expired - DateTime.Now - _refreshThreshold; //var ttt = logininfo.TokenInfo.Expired - DateTime.Now - _refreshThreshold;
_logger.LogInformation("用户:" + logininfo.UserInfo.Nickname + "shijianduibi" + ttt); //_logger.LogInformation("用户:" + logininfo.UserInfo.Nickname + "shijianduibi" + ttt);
_logger.LogInformation("用户:" + logininfo.UserInfo.Nickname + ";过期时间:" + logininfo.TokenInfo.Expired); //_logger.LogInformation("用户:" + logininfo.UserInfo.Nickname + ";过期时间:" + logininfo.TokenInfo.Expired);
var refreshtokeninfo = RefreshToken(logininfo.TokenInfo.Token, logininfo.TokenInfo.RefreshToken, loginService); var refreshtokeninfo = RefreshToken(logininfo.TokenInfo.Token, logininfo.TokenInfo.RefreshToken, loginService);
var info = _redisClientService.GetStringKey<LoginInDto>($"wms_login_{token}"); var info = _redisClientService.GetStringKey<LoginInDto>($"wms_login_{token}");
//_logger.LogInformation("RefreshToken:我在刷新登录--完成:" + info.UserInfo.Nickname); //_logger.LogInformation("RefreshToken:我在刷新登录--完成:" + info.UserInfo.Nickname);