自动退出逻辑测试

IRC_NewDev
hang 2024-04-16 18:00:51 +08:00
parent 70ababc2d9
commit 0b0df00525
2 changed files with 24 additions and 9 deletions

View File

@ -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<string>($"{_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

View File

@ -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
}
}