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); } }