From 0b0df0052542313f11e660db0d79ab163104463a Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Tue, 16 Apr 2024 18:00:51 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E9=80=80=E5=87=BA=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LimitUserRequestAuthorization.cs | 17 +++++++++++++++-- .../_IRaCIS/Output/ApiResponseCodeEnum.cs | 16 +++++++++------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/IRaCIS.Core.Application/BusinessFilter/LimitUserRequestAuthorization.cs b/IRaCIS.Core.Application/BusinessFilter/LimitUserRequestAuthorization.cs index cf0e482bf..699f4450b 100644 --- a/IRaCIS.Core.Application/BusinessFilter/LimitUserRequestAuthorization.cs +++ b/IRaCIS.Core.Application/BusinessFilter/LimitUserRequestAuthorization.cs @@ -67,7 +67,10 @@ public class LimitUserRequestAuthorization : IAsyncAuthorizationFilter if (string.IsNullOrWhiteSpace(cacheUserToken)) { //设置当前用户最新Token - await _provider.SetAsync(_userInfo.Id.ToString(), _userInfo.UserToken, TimeSpan.FromMinutes(minutes)); + await _provider.SetAsync(_userInfo.Id.ToString(), _userInfo.UserToken, TimeSpan.FromDays(7)); + + await _provider.SetAsync($"{_userInfo.Id.ToString()}_Online", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromMinutes(minutes)); + cacheUserToken = _userInfo.UserToken; @@ -75,7 +78,17 @@ public class LimitUserRequestAuthorization : IAsyncAuthorizationFilter //是同一个人 else if (cacheUserToken == _userInfo.UserToken) { - await _provider.SetAsync(_userInfo.Id.ToString(), _userInfo.UserToken, TimeSpan.FromMinutes(minutes)); + var cacheTime = (await _provider.GetAsync($"{_userInfo.Id.ToString()}_Online")).Value; + + //过期了 需要自动退出 + if(string.IsNullOrEmpty(cacheTime)) + { + context.Result = new JsonResult(ResponseOutput.NotOk("登录无操作超时自动退出"), ApiResponseCodeEnum.AutoLoginOut)); + } + else + { + await _provider.SetAsync($"{_userInfo.Id.ToString()}_Online", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromMinutes(minutes)); + } } else diff --git a/IRaCIS.Core.Infrastructure/_IRaCIS/Output/ApiResponseCodeEnum.cs b/IRaCIS.Core.Infrastructure/_IRaCIS/Output/ApiResponseCodeEnum.cs index f96a2d6ba..58eb41fd6 100644 --- a/IRaCIS.Core.Infrastructure/_IRaCIS/Output/ApiResponseCodeEnum.cs +++ b/IRaCIS.Core.Infrastructure/_IRaCIS/Output/ApiResponseCodeEnum.cs @@ -18,7 +18,7 @@ namespace IRaCIS.Core.Infrastructure.Extention BusinessValidationFailed = 2, //数据不存在 - DataNotExist=3, + DataNotExist = 3, //程序异常 相当于之前的 IsSuccess = false ProgramException = 4, @@ -27,10 +27,10 @@ namespace IRaCIS.Core.Infrastructure.Extention //需要提示 ,需要提示 从Result 取数据 ( 0 可以继续处理提交 ,1 不能进行继续处理提交 ,2 刷新列表 ) - NeedTips = 5, + NeedTips = 5, - CloseCurrentWindows=6, + CloseCurrentWindows = 6, @@ -38,15 +38,17 @@ namespace IRaCIS.Core.Infrastructure.Extention //在其他地方登陆,被迫下线 LoginInOtherPlace = -1, + AutoLoginOut = -2, + //没有带token访问(未登陆) - NoToken=10, + NoToken = 10, //带了Token,但是没有相应权限(该用户类型不能做) - HaveTokenNotAccess=11 + HaveTokenNotAccess = 11 } - - + + }