在C#中,要判斷JWT(JSON Web Token)是否有效,可以使用System.IdentityModel.Tokens.Jwt
和Microsoft.IdentityModel.Tokens
庫。以下是一個示例代碼,展示了如何驗證JWT令牌:
using System;
using System.IdentityModel.Tokens.Jwt;
using System.Text;
using Microsoft.IdentityModel.Tokens;
public class JwtTokenValidator
{
private readonly string _jwtSecret;
private readonly string _issuer;
private readonly string _audience;
public JwtTokenValidator(string jwtSecret, string issuer, string audience)
{
_jwtSecret = jwtSecret;
_issuer = issuer;
_audience = audience;
}
public bool IsValidJwtToken(string token)
{
try
{
var validationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = _issuer,
ValidateAudience = true,
ValidAudience = _audience,
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtSecret)),
ValidateLifetime = true,
ClockSkew = TimeSpan.Zero
};
var jwtSecurityTokenHandler = new JwtSecurityTokenHandler();
var principal = jwtSecurityTokenHandler.ValidateToken(token, validationParameters, out SecurityToken validatedToken);
return principal != null;
}
catch (Exception ex)
{
// Handle exception, e.g., log the error, throw a custom exception, etc.
Console.WriteLine($"Error validating JWT token: {ex.Message}");
return false;
}
}
}
使用這個類,你可以創建一個JwtTokenValidator
實例,并傳入JWT密鑰、發行者和受眾。然后,使用IsValidJwtToken
方法驗證傳入的JWT令牌是否有效。如果令牌有效,該方法將返回true
,否則返回false
。
請注意,這個示例僅用于演示目的。在實際應用中,你可能需要根據具體需求對代碼進行調整,例如處理異常、配置驗證參數等。