在C#中,使用System.IdentityModel.Tokens.Jwt
庫創建JWT時,可以通過設置 expiration
屬性來設置有效期。以下是一個示例:
using System;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using Microsoft.IdentityModel.Tokens;
public class JwtTokenBuilder
{
public static string CreateJwtToken(string secretKey, string issuer, string audience, int expirationMinutes)
{
var claims = new[]
{
new Claim(ClaimTypes.Name, "John Doe"),
new Claim(ClaimTypes.Email, "john.doe@example.com")
};
var key = Encoding.UTF8.GetBytes(secretKey);
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(claims),
Expires = DateTime.UtcNow.AddMinutes(expirationMinutes),
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
};
var token = new JwtSecurityToken(
issuer,
audience,
tokenDescriptor.Claims,
tokenDescriptor.Expires,
tokenDescriptor.SigningCredentials);
return new JwtSecurityTokenHandler().WriteToken(token);
}
}
在這個示例中,CreateJwtToken
方法接受以下參數:
secretKey
:用于簽名和驗證JWT的密鑰。issuer
:JWT的發行者。audience
:JWT的接收者。expirationMinutes
:JWT的有效期(以分鐘為單位)。在創建JwtSecurityTokenDescriptor
對象時,通過設置Expires
屬性來定義JWT的有效期。在這個例子中,我們將有效期設置為當前時間加上expirationMinutes
指定的分鐘數。