using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using Microsoft.IdentityModel.Tokens;
namespace Bunny.Common.Utils.Jwt;
public static partial class JwtUtil
{
///
/// 生成token
///
/// 实体类数据
/// 多少天之后过期
/// 生成好的token
public static string GenerateJwt(T data, int day = Day)
{
if (data == null) return "";
// 初始化字典
var propertyInfos = data.GetType().GetProperties();
var claims = (from propertyInfo in propertyInfos
let name = propertyInfo.Name
let value = propertyInfo.GetValue(data)?.ToString()
select value.IsNullOrEmpty() ? new Claim(name, "") : new Claim(name, value!)).ToList();
// 生成token
var token = new JwtSecurityToken(expires: DateTime.UtcNow.AddDays(day), claims: claims);
return new JwtSecurityTokenHandler().WriteToken(token);
}
///
/// 生成token
///
/// 负载,放入你的内容
/// 多少天之后过期
/// 生成好的token
public static string GenerateJwt(IEnumerable? claims = default, int day = Day)
{
var token = new JwtSecurityToken(expires: DateTime.UtcNow.AddDays(day), claims: claims);
return new JwtSecurityTokenHandler().WriteToken(token);
}
///
/// 生成token
///
/// 生成JWT的key
/// 负载,放入你的内容
/// 多少天之后过期
/// 生成好的token
public static string GenerateJwt(string jwtKey = JwtKey, IEnumerable? claims = default, int day = Day)
{
var token = new JwtSecurityToken(
expires: DateTime.UtcNow.AddDays(day),
claims: claims,
signingCredentials: Credentials(jwtKey));
return new JwtSecurityTokenHandler().WriteToken(token);
}
///
/// 生成token
///
/// 授权
/// 认证
/// 生成JWT的key
/// 负载,放入你的内容
/// 多少天之后过期
/// 生成好的token
public static string GenerateJwt(string issuer, string audience, string jwtKey = JwtKey,
IEnumerable? claims = default, int day = Day)
{
var token = new JwtSecurityToken(
issuer,
audience,
expires: DateTime.UtcNow.AddDays(day),
claims: claims,
signingCredentials: Credentials(jwtKey));
return new JwtSecurityTokenHandler().WriteToken(token);
}
}