From 0cfc8fc37bc987f753b4c8f13f5c25d2d02244d0 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 26 May 2022 16:26:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=A8=E6=88=B7=E6=9D=83?= =?UTF-8?q?=E9=99=90=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LimitUserRequestAuthorization.cs | 18 +++++++++++++++++- .../SiteSurvey/TrialSiteSurveyService.cs | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/IRaCIS.Core.Application/BusinessFilter/LimitUserRequestAuthorization.cs b/IRaCIS.Core.Application/BusinessFilter/LimitUserRequestAuthorization.cs index 7a9f82542..02cce72f6 100644 --- a/IRaCIS.Core.Application/BusinessFilter/LimitUserRequestAuthorization.cs +++ b/IRaCIS.Core.Application/BusinessFilter/LimitUserRequestAuthorization.cs @@ -35,27 +35,43 @@ public class LimitUserRequestAuthorization : IAsyncAuthorizationFilter { if (context.ActionDescriptor.EndpointMetadata.Any(item => item is IAllowAnonymous)) { + + return; //匿名访问的不处理 } else { //1、用户登陆的时候,设置缓存 + + + + //没有从请求中取到token + if (string.IsNullOrWhiteSpace(_userInfo.UserToken)) + { + context.HttpContext.Response.ContentType = "application/json"; + context.HttpContext.Response.StatusCode = StatusCodes.Status200OK; + await context.HttpContext.Response.WriteAsync(JsonConvert.SerializeObject(ResponseOutput.NotOk("当前请求未从Header/Url取到Token"))); + } + //2、在这里取缓存 进行比较 看是否有其他人进行了登陆,如果其他人登陆了,就把之前用户挤掉 var cacheUserToken = (await _provider.GetAsync(_userInfo.Id.ToString())).Value; + //缓存中没有取到Token if (string.IsNullOrWhiteSpace(cacheUserToken)) { - //设置当前用户最新Token await _provider.SetAsync(_userInfo.Id.ToString(), _userInfo.UserToken, TimeSpan.FromDays(7)); + cacheUserToken = _userInfo.UserToken; + } //是同一个人 else if (cacheUserToken == _userInfo.UserToken) { } + else { diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs index e41684bb3..65edc32b8 100644 --- a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs +++ b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs @@ -283,7 +283,7 @@ namespace IRaCIS.Core.Application.Contracts TrialSiteSurveyId = dbEntity!.Id, Token = _tokenService.GetToken(IRaCISClaims.Create(new UserBasicInfo() { - Id = Guid.Empty, + Id = Guid.NewGuid(), IsReviewer = false, IsAdmin = false, RealName = "SiteSurvey",