以下是使用 .NET 和 JWT 生成和解密令牌的代码示例:
生成JWT Token:
using System;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using Microsoft.IdentityModel.Tokens;
public static string GenerateToken(string secretKey, string issuer, string audience)
{
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey));
var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var claims = new[] {
new Claim(ClaimTypes.NameIdentifier, "1234"),
new Claim(ClaimTypes.Role, "Admin")
};
var token = new JwtSecurityToken(
issuer: issuer,
audience: audience,
claims: claims,
expires: DateTime.UtcNow.AddDays(7),
signingCredentials: credentials
);
return new JwtSecurityTokenHandler().WriteToken(token);
}
解密JWT Token:
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using Microsoft.IdentityModel.Tokens;
public static ClaimsPrincipal ValidateToken(string token, string secretKey, string issuer, string audience)
{
var validationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey)),
ValidateIssuer = true,
ValidIssuer = issuer,
ValidateAudience = true,
ValidAudience = audience,
ValidateLifetime = true,
};
var handler = new JwtSecurityTokenHandler();
ClaimsPrincipal principal;
try
{
principal= handler.ValidateToken(token, validationParameters, out _);
// You can access the claims of the token using:
//principal.Claims
return principal;
}
catch (Exception ex)
{
// Token validation failed
return null;
}
}
请注意,要使用 JWT 进行身份验证,您需要安全地存储密钥和其他敏感信息,并仅将加密的 token 发送到客户端。




