.NET JWT集成
之前也写过一篇jwt集成教程,再写一篇是因为我自己觉得那一篇废话有些多,所以想重新写一篇
1.首先引入包:System.IdentityModel.Tokens.Jwt
2.创建一个JwtExtensions扩展类
3.代码如下:
根据当前用户登录名生成对应的token
时间自行定义,也可以直接写在appsetting中,具体请翻阅文档
点击查看代码
///
/// 创建token
///
/// 用户登录名
/// key
/// 密钥名
/// token有效时间
///
public static string CreateToken(string userName, string jwtSecurityKey, string jwtKeyName, DateTime expirs)
{
//Claim证件
var claims = new List();
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不能太少,会报错,仔细看代码就会发现错误