首页 > 其他分享 >JWT(2)

JWT(2)

时间:2023-04-03 23:01:56浏览次数:29  
标签:string JWT Jwt System static var new

 

using Microsoft.IdentityModel.Tokens;
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;

namespace ProJWT
{
    class Program
    {
        static string Jwt_Issuer = "Jwt:Issuer";
        static string Jwt_Key = "Jwt:Key11111111111111111111111111111111111111111111111111111111111111111111111111111111";
        static string Jwt_ExpiresInMinutes = "60";
        static string Jwt_Audience = "Audience";
        static void Main(string[] args)
        {           var token = GenerateJwtToken(10086);
            var bools = ValidateJwtToken(token);
        }


        private static string GenerateJwtToken(int userId)
        {
            // 从配置文件中获取JWT密钥和有效期
            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Jwt_Key));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var expiration = DateTime.UtcNow.AddMinutes(Convert.ToDouble(Jwt_ExpiresInMinutes));

            // 生成JWT令牌
            var token = new JwtSecurityToken(
                issuer: Jwt_Issuer,
                audience: Jwt_Audience,
                claims: new List<Claim> { new Claim(ClaimTypes.NameIdentifier, userId.ToString()) },
                expires: expiration,
                signingCredentials: creds);

            return new JwtSecurityTokenHandler().WriteToken(token);
        }

        public static bool ValidateJwtToken(string token)
        {
            try
            {
                var key = Encoding.ASCII.GetBytes(Jwt_Key);

                // 配置令牌验证参数
                var validationParameters = new TokenValidationParameters
                {
                    ValidateIssuer = true,
                    ValidateAudience = true,
                    ValidateLifetime = true,
                    ValidateIssuerSigningKey = true,
                    ValidIssuer = Jwt_Issuer,
                    ValidAudience = Jwt_Audience,
                    IssuerSigningKey = new SymmetricSecurityKey(key)
                };

                // 验证令牌
                SecurityToken validatedToken;
                JwtSecurityTokenHandler _tokenHandler = new JwtSecurityTokenHandler();
                var principal = _tokenHandler.ValidateToken(token, validationParameters, out validatedToken);
                var vatoken= ((System.IdentityModel.Tokens.Jwt.JwtSecurityToken)validatedToken).RawData;
                return token.Equals(((System.IdentityModel.Tokens.Jwt.JwtSecurityToken)validatedToken).RawData);
            }
            catch
            {
                return false;
            }
        }
    }
}

 

标签:string,JWT,Jwt,System,static,var,new
From: https://www.cnblogs.com/ZkbFighting/p/17284812.html

相关文章

  • PHP实现JWT lcobucci/jwt生成jwt token
    github:https://github.com/lcobucci/jwt/tree/3.21.安装PHP5.5+(v3.2)andPHP7.1(v4.x)OpenSSLExtension"lcobucci/jwt":"^3.3"composerrequirelcobucci/jwt2.一些参数说明iss【issuer】发布者的url地址sub【subject】该JWT所面向的用户,用于处理特定应用,不是常......
  • 两种方式自定制基于JWT的认证类BaseAuthentication和BaseJSONWebTokenAuthentication
    1.基于BaseAuthentication的自定义方法  2.views中调用自定义方法MyJwtAuthentication验证  3.基于BaseAuthentication的自定义方法测试:token过期  4.基于BaseAuthentication的自定义方法测试:token数据有错误,需检查token正确性  5.基于BaseAuthenticati......
  • JWT控制返回数据格式
    1.只使用JWT的局部校验,不加权限控制的不会限制用户登录  2.JWT的局部校验配合权限控制提供用户登录访问限制  2_1.JWT的局部校验配合权限控制提供用户登录访问限制  3.重写jwt_response_payload_handler方法,创建utils文件,自定义返回格式  4.重写jwt_respo......
  • 使用JWT自定制认证类
    1.创建auth写MyToken类  2.view中接口导入引用MyToken  3.测试自定义认证类_失败测试  4.测试自定义认证类_成功测试  5.打印用户信息  6.自定义Mytoken类_2  7.可以单独打印某项用户信息  8.可以单独打印某项用户信息_获取名称  ......
  • JWT的简单使用
    1.JWT原理  2.JWT校验流程  3.DRF项目的JWT认证开发流程(重点)4.配置用户头像存储  5.创建超级用户  6.修改该配置可以将默认项目的英文提示改成中文  7.JWT的简单使用_url  8.JWT的简单使用_测试生成token9.JWT的添加认证类全局配置,局部配置......
  • JWT
    JWTJSONWebToken(缩写JWT)是跨域认证解决方案。为什么用JWT传统的单体应用,服务器端生成存储session_id发送给客户端,客户端保存在cookie中,客户端后面每次请求通过cookie......
  • .Net 6.0中使用JWT加密
    准备工作:在步入正题之前我们首先要对JWT加密有个初步的概念和认识,并对其原理有一定的理解,这样才能使我们在.Net6.0中更快的上手JWT加密,下面是我整理JWT加密的一些资......
  • flask使用jwt
    importdatetimeimportjwtfromflaskimportcurrent_appclassAuth:def__init__(self,user_id,expires):self.id=user_idself.expires......
  • expressjwt的getToken如何使用
    expressjwt()是一个Express中间件,用于验证JWT(JSONWebTokens)。它会检查请求头中是否存在Authorization字段,并且该字段的值是否是符合JWT规范的格式。如果JWT有效......
  • JWT实现登陆认证及Token自动续期
    过去这段时间主要负责了项目中的用户管理模块,用户管理模块会涉及到加密及认证流程,加密已经在前面的文章中介绍了,可以阅读用户管理模块:如何保证用户数据安全。今天就来讲讲......