在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
。
请注意,这个示例仅用于演示目的。在实际应用中,你可能需要根据具体需求对代码进行调整,例如处理异常、配置验证参数等。