using Microsoft.IdentityModel.Tokens; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text; using Znyc.CloudCar.Configuration; using Znyc.CloudCar.Utility.Helper; namespace Znyc.CloudCar.Auth.Policys { /// /// JWTToken生成类 /// public class JwtToken { public static string Create(Claim[] claims) { SymmetricSecurityKey key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(AppSettingsConstVars.JwtConfigSecretKey)); SigningCredentials signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); string timestamp = DateTime.Now.AddMinutes(AppSettingsConstVars.JwtConfigExpires).ToTimestamp() .ToString(); claims = claims.Append(new Claim(Claims.RefreshExpires, timestamp)).ToArray(); JwtSecurityToken token = new JwtSecurityToken( AppSettingsConstVars.JwtConfigIssuer, AppSettingsConstVars.JwtConfigAudience, claims, DateTime.Now, DateTime.Now.AddMinutes(AppSettingsConstVars.JwtConfigExpires), signingCredentials ); return new JwtSecurityTokenHandler().WriteToken(token); } public Claim[] Decode(string jwtToken) { JwtSecurityTokenHandler jwtSecurityTokenHandler = new JwtSecurityTokenHandler(); JwtSecurityToken jwtSecurityToken = jwtSecurityTokenHandler.ReadJwtToken(jwtToken); return jwtSecurityToken?.Claims?.ToArray(); } } }