.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"
  }
4.创建一个测试方法,进行测试,发现生成token成功

这里埋了一个坑,密钥keyname不能太少,会报错,仔细看代码就会发现错误

posted @ 2022-03-06 22:40  rookiexwang  阅读(149)  评论(0编辑  收藏  举报