zoukankan      html  css  js  c++  java
  • jwt-dotnet使用示例

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using JWT;
    using JWT.Algorithms;
    using JWT.Serializers;
    
    namespace JWTConsole
    {
        class Program
        {
            static void Main(string[] args)
            {
                var payload = new Dictionary<string, object>{
                    { "claim1", 0 },
                    { "claim2", "claim2-value" }
                };
                var secret = "GQDstcKsx0NHjPOuXOYg5MbeJ1XT0uFiwDVvVBrk";
    
                IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
                IJsonSerializer serializer = new JsonNetSerializer();
                IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
                IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);
    
                var token = encoder.Encode(payload, secret);
                Console.WriteLine(token);
    
                IDateTimeProvider provider = new UtcDateTimeProvider();
                IJwtValidator validator = new JwtValidator(serializer, provider);
                IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder);
                try
                {
                    //IDateTimeProvider provider = new UtcDateTimeProvider();
                    //IJwtValidator validator = new JwtValidator(serializer, provider);
                    //IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder);
    
                    var json = decoder.Decode(token, secret, verify: true);
                    Console.WriteLine(json);
                }
                catch (TokenExpiredException)
                {
                    Console.WriteLine("Token has expired");
                }
                catch (SignatureVerificationException)
                {
                    Console.WriteLine("Token has invalid signature");
                }
    
    
    
                var now = provider.GetNow().AddMinutes(1);
    
                var unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); // or use JwtValidator.UnixEpoch
                var secondsSinceEpoch = Math.Round((now - unixEpoch).TotalSeconds);
    
                payload = new Dictionary<string, object>{
                        { "exp", secondsSinceEpoch }
                };
                token = encoder.Encode(payload, secret);
                var json0 = decoder.Decode(token, secret,verify: true); // TokenExpiredException
                Console.WriteLine(json0);
    
            }
        }
    }

    https://github.com/jwt-dotnet/jwt

  • 相关阅读:
    Oracle PL/SQL中如何使用%TYPE和%ROWTYPE
    SVN使用教程总结
    实践SQLServer Tuning
    SQL性能优化:如何定位网络性能问题
    windows7下修改hosts文件无效解决办法
    jQuery Event.stopPropagation() 函数详解
    引用js或css后加?v= 版本号的用法
    JS实现点击跳转登陆邮箱
    DWZ (JUI) 教程 navTab 刷新分析
    CPU与内存的关系
  • 原文地址:https://www.cnblogs.com/OnlyDreams/p/7569759.html
Copyright © 2011-2022 走看看