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