Xiezn.Core/Common/Helpers/JwtHelper.cs
(开头部分) 3KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using Microsoft.IdentityModel.Tokens;
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using Xiezn.Core.Common.Helpers;
using Xiezn.Core.Models;
using Xiezn.Core.Models.ConfModel;
namespace Xiezn.Core.Common.Helpers
{
public class JwtHelper
{
/// <summary>
/// 颁发JWT字符串
/// </summary>
/// <param name="tokenModel"></param>
/// <returns></returns>
public static string IssueJWT(TokenModel tokenModel)
{
var dateTime = DateTime.UtcNow;
var claims = new Claim[]
{
new Claim(JwtRegisteredClaimNames.Jti, tokenModel.Uid.ToString()),//用户Id
new Claim("Uname", tokenModel.Uname),
new Claim("Role", tokenModel.Role),//身份
new Claim("Project", tokenModel.Project),
new Claim("UNickname", tokenModel.UNickname),
new Claim(JwtRegisteredClaimNames.Iat,dateTime.ToString(), ClaimValueTypes.Integer64)
};
//秘钥
JwtAuthConfig jwtAuthConfig = ConfigHelper.GetConfig<JwtAuthConfig>("JwtAuth");
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtAuthConfig.SecurityKey));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
//过期时间
double exp = 0;
switch (tokenModel.TokenType)
{
case "Web":
exp = jwtAuthConfig.WebExp;
break;
case "App":
exp = jwtAuthConfig.AppExp;
break;
case "MiniProgram":
exp = jwtAuthConfig.MiniProgramExp;
break;
case "Other":
exp = jwtAuthConfig.OtherExp;
break;
}
var jwt = new JwtSecurityToken(
issuer: jwtAuthConfig.Issuer,
claims: claims, //声明集合
expires: dateTime.AddHours(exp),
signingCredentials: creds);
var jwtHandler = new JwtSecurityTokenHandler();
var encodedJwt = jwtHandler.WriteToken(jwt);
后面还有 42 行代码,购买后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
