修复tokens问题

This commit is contained in:
gui.h 2021-12-24 10:44:49 +08:00
parent 8c7fb34589
commit b96a97fe1c
4 changed files with 15 additions and 14 deletions

View File

@ -16,7 +16,7 @@ namespace FastTunnel.Core.Config
[Obsolete("由Tokens替换")] [Obsolete("由Tokens替换")]
public string Token { get; set; } public string Token { get; set; }
public string[] Tokens { get; set; } public List<string> Tokens { get; set; }
public ApiOptions Api { get; set; } public ApiOptions Api { get; set; }

View File

@ -97,24 +97,25 @@ namespace FastTunnel.Core.MiddleWares
private bool checkToken(HttpContext context) private bool checkToken(HttpContext context)
{ {
if (string.IsNullOrEmpty(fastTunnelServer.ServerOption.CurrentValue.Token) bool checkToken = false;
&& (fastTunnelServer.ServerOption.CurrentValue.Tokens == null) || fastTunnelServer.ServerOption.CurrentValue.Tokens.Count() == 0) if ((fastTunnelServer.ServerOption.CurrentValue.Tokens != null && fastTunnelServer.ServerOption.CurrentValue.Tokens.Count() != 0)
|| !string.IsNullOrEmpty(fastTunnelServer.ServerOption.CurrentValue.Token))
{ {
return true; checkToken = true;
} }
if (!checkToken)
return true;
// 客户端未携带token登录失败 // 客户端未携带token登录失败
if (!context.Request.Headers.TryGetValue(FastTunnelConst.FASTTUNNEL_TOKEN, out var token)) if (!context.Request.Headers.TryGetValue(FastTunnelConst.FASTTUNNEL_TOKEN, out var token))
{
return false; return false;
}
if (token.Equals(fastTunnelServer.ServerOption.CurrentValue.Token)) if (token.Equals(fastTunnelServer.ServerOption.CurrentValue.Token)
{ || (fastTunnelServer.ServerOption.CurrentValue.Tokens?.Contains(token) ?? false))
return true; return true;
};
return fastTunnelServer.ServerOption.CurrentValue.Tokens?.Contains<string>(token) ?? false; return false;
} }
} }
} }

View File

@ -54,7 +54,7 @@ namespace FastTunnel.Core.Forwarder.MiddleWare
responseAwaiter.TrySetResult(reverseConnection); responseAwaiter.TrySetResult(reverseConnection);
var closedAwaiter = new TaskCompletionSource<object>(); var closedAwaiter = new TaskCompletionSource<object>();
closedAwaiter.SetTimeOut(1000 * 60 * 30, null); closedAwaiter.SetTimeOut(20000, null);
lifetime.ConnectionClosed.Register((task) => lifetime.ConnectionClosed.Register((task) =>
{ {

View File

@ -23,9 +23,9 @@
// Forward.false // Forward.false
"EnableForward": true, "EnableForward": true,
// TokenTokenstoken // TokenTokenstoken TokenTokens
"Token": "TOKEN_FOR_CLIENT_AUTHENTICATION", //"Token": "TOKEN_FOR_CLIENT_AUTHENTICATION",
"Tokens": [ "TOKEN1", "TOKEN2", "TOKEN2" ], "Tokens": [ "TOKEN_FOR_CLIENT_AUTHENTICATION" ],
/** /**
* 访apiJWT * 访apiJWT