.NET JWT集成
之前也写过一篇jwt集成教程,再写一篇是因为我自己觉得那一篇废话有些多,所以想重新写一篇
1.首先引入包:System.IdentityModel.Tokens.Jwt
2.创建一个JwtExtensions扩展类
3.代码如下:
根据当前用户登录名生成对应的token
时间自行定义,也可以直接写在appsetting中,具体请翻阅文档
点击查看代码
/// <summary>
/// 创建token
/// </summary>
/// <param name="userName">用户登录名</param>
/// <param name="jwtSecurityKey">key</param>
/// <param name="jwtKeyName">密钥名</param>
/// <param name="expirs">token有效时间</param>
/// <returns></returns>
public static string CreateToken(string userName, string jwtSecurityKey, string jwtKeyName, DateTime expirs)
{
//Claim证件
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Name, id));
//根据jwt key获取密钥
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSecurityKey)); // 获取密钥
//根据密钥生成凭证
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); //凭证 ,根据密钥生成
var token = new JwtSecurityToken(
issuer: jwtKeyName,
audience: jwtKeyName,
claims: claims,
expires: expirs,
signingCredentials: creds
);
return new JwtSecurityTokenHandler().WriteToken(token);
}
appsetting.json
"JwtConfig": {
"JwtKeyName": "JwtKey",
"JwtSecurityKey": "1CC7121212121212"
}
这里埋了一个坑,密钥keyname不能太少,会报错,仔细看代码就会发现错误
越是无知的人越是觉得自己无所不知(之前的自己)
越是学习的人越是觉得自己会的太少了(现在的自己)
共勉