.net core 拦截API调用判断参数
因为需要判断票据是否超时的,超时的话则返回登录页。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | public void Configure((IApplicationBuilder app, IHostingEnvironment env) { //添加一个中间件 app.Use((context, next) => { // context.Response.WriteAsync("this is test"); var resposeLen = context.Request; try { //判断方法中是否有ticket参数,如果有则代表该操作需要判断ticket是否有效,过期 if (resposeLen.Form.Keys.Contains( "ticket" )) { string ticket = resposeLen.Form[ "ticket" ].ToString(); Guid userGuid; //返回的用户ID string s0; //返回的系统名称 DateTime dt; //返回的时间 if (TicketRingContext.Parse(ticket, out userGuid, out s0, out dt)) { //一但正确获取到了ticket的创建时间及用户信息,则进行下一步的判断 int outTime =ServiceConfigurationHelper.GetServerValue( "TicketTimeOut" ) == null ?0: int .Parse(ServiceConfigurationHelper.GetServerValue( "TicketTimeOut" )); if ((System.DateTime.Now - dt).TotalMinutes > outTime&&outTime!=0) { //超时则改变请求方法,改为登录超时的方法。 context.Request.Path = "/api/AlarmInfo/GotoHome" ; } } } } catch (Exception ex) { //异常则按照原来的顺序继续执行 return next(); } return next(); }); } |
GotoHome方法:
1 2 3 4 5 | [Route( "GotoHome" )] [HttpPost] public object GotoHome() { return new {State= false ,ErrorCode=1001,Message= "登录超时" ,GotoUrl= ServiceConfigurationHelper.GetServerValue( "Comp" ) }; } |
修改jquery.js的回调方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | return jQuery.ajax( jQuery.extend( { url: url, type: method, dataType: type, data: data, success: function (data) {<br> //如果返回的参数满足所有条件,则代表是登录超时。 if (data.State != undefined && data.State == false && data.ErrorCode != undefined && data.ErrorCode == 1001) { //判断当前页面是否是子页面(嵌入到Iframe里面的),如果是则提示登录失效,如果不是则直接跳转到首页。 if (top.location != self.location) { // alert("登录失效,"); } else { location.href = data.GotoUrl; } } callback(data); } }, jQuery.isPlainObject( url ) && url ) ); |
标签:
.net Core
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类