From 785457a5f4c2bf35e0c6e91388cb310624e7bebd Mon Sep 17 00:00:00 2001 From: falcon <9504402@qq.com> Date: Wed, 4 Jan 2023 16:04:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=99=BB=E5=BD=95=E8=BF=87?= =?UTF-8?q?=E6=9C=9F=E6=97=B6=E9=97=B4=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FalconAuthenticationHandler.cs | 29 ++++++++++++------- Falcon.SugarApi/FalconClaim/UserLoginModel.cs | 4 +++ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/Falcon.SugarApi/FalconClaim/FalconAuthenticationHandler.cs b/Falcon.SugarApi/FalconClaim/FalconAuthenticationHandler.cs index 3de4595..49ee73c 100644 --- a/Falcon.SugarApi/FalconClaim/FalconAuthenticationHandler.cs +++ b/Falcon.SugarApi/FalconClaim/FalconAuthenticationHandler.cs @@ -1,17 +1,19 @@ using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Http; +using SqlSugar; using System; using System.Collections.Generic; using System.Net; using System.Security.Claims; using System.Threading.Tasks; +using System.Linq; namespace Falcon.SugarApi.FalconClaim { /// /// 自定义验证方式 /// - public class FalconAuthenticationHandler:IAuthenticationHandler + public class FalconAuthenticationHandler : IAuthenticationHandler { /// /// 构造自定义身份验证方式 @@ -35,23 +37,24 @@ namespace Falcon.SugarApi.FalconClaim /// public Task AuthenticateAsync() { - if(!this.Context.Request.Headers.TryGetValue(FalconClaimOption.FalconAuthenticationKey,out var val)) { + if (!this.Context.Request.Headers.TryGetValue(FalconClaimOption.FalconAuthenticationKey, out var val)) { return UnLoginResultTask; } var token = val.ToString(); - if(token.IsNullOrEmpty()) { + if (token.IsNullOrEmpty()) { return UnLoginResultTask; } - if(FalconClaimOption.TokenPrefix.IsNotNullOrEmpty() && !token.StartsWith(FalconClaimOption.TokenPrefix)) { + if (FalconClaimOption.TokenPrefix.IsNotNullOrEmpty() && !token.StartsWith(FalconClaimOption.TokenPrefix)) { return UnLoginResultTask; } try { var ticket = GetTicket(token); - if(ticket == null) { + if (ticket == null) { return UnLoginResultTask; } return Task.FromResult(AuthenticateResult.Success(ticket)); - } catch(Exception) { + } + catch (Exception) { return UnLoginResultTask; } } @@ -69,7 +72,7 @@ namespace Falcon.SugarApi.FalconClaim } /// - public Task InitializeAsync(AuthenticationScheme scheme,HttpContext context) { + public Task InitializeAsync(AuthenticationScheme scheme, HttpContext context) { this.Scheme = scheme; this.Context = context; return Task.CompletedTask; } @@ -82,16 +85,22 @@ namespace Falcon.SugarApi.FalconClaim List? claims = null; try { claims = this.TokenBuilter.GetClaims(token); - } catch(Exception) { + } + catch (Exception) { return null; } - if(claims == null || claims.Count == 0) { + if (claims == null || claims.Count == 0) { + return null; + } + //检测是否设置过期时间 + var dtExp = claims.Where(m => m.Type == ClaimTypes.Expiration); + if (dtExp.Any() && !DateTime.TryParse(dtExp.First().Value, out var et) && et > DateTime.Now) { return null; } var cid = new ClaimsIdentity(FalconClaimOption.SchemeName); cid.AddClaims(claims); var principal = new ClaimsPrincipal(cid); - return new AuthenticationTicket(principal,this.Scheme.Name); + return new AuthenticationTicket(principal, this.Scheme.Name); } /// diff --git a/Falcon.SugarApi/FalconClaim/UserLoginModel.cs b/Falcon.SugarApi/FalconClaim/UserLoginModel.cs index 70cf7b5..bddb623 100644 --- a/Falcon.SugarApi/FalconClaim/UserLoginModel.cs +++ b/Falcon.SugarApi/FalconClaim/UserLoginModel.cs @@ -14,5 +14,9 @@ /// 密码 /// public string? Password { get; set; } + /// + /// 过期小时数。0或者空为不限制 + /// + public int? ExpHours { get; set; } } }