一个.NET的轻量级JWT库

这两天网上闲逛的时候,看到一个.NET的轻量级JWT库LitJWT,LitJWT号称主要关注性能,能提升至少5倍的编码/解码速度,以及更少的配置!

LitJWT支持的平台为netstandard 2.1或net5.0更高。

LitJWT宣传的性能对比图:
在这里插入图片描述
使用方法:

1、安装依赖:

PM> Install-Package LitJWT

2、使用:

// Get recommended-size random key.
var key = HS256Algorithm.GenerateRandomRecommendedKey();

// Create encoder, JwtEncoder is thread-safe and recommend to store static/singleton.
var encoder = new JwtEncoder(new HS256Algorithm(key));

// Encode with payload, expire, and use specify payload serializer.
var token = encoder.Encode(new { foo = "pay", bar = "load" }, TimeSpan.FromMinutes(30));

// Create decoder, JwtDecoder is also thread-safe so recommend to store static/singleton.
var decoder = new JwtDecoder(encoder.SignAlgorithm);

// Decode and verify, you can check the result.
var result = decoder.TryDecode(token, out var payload);
if (result == DecodeResult.Success)
{
    Console.WriteLine((payload.foo, payload.bar));
}

自定义序列化:

在默认情况下。LitJWT 使用System.Text.Json.JsonSerializer进行序列号。 如果你想使用自定义JsonSerializerOptions的话,JwtEncoderJwtDecoderJsonSerializerOptions serializerOptions构造函数的重载。

如果你想使用另一个序列化器,编码方法接收Action<T, JwtWriter> payloadWriter。您必须调用writer.Write(ReadOnlySpan<byte> payload)方法来序列化。ReadOnlySpan<byte>必须是 Utf8 。

这是使用 JSON.NET 的示例,这有编码开销。

var token = encoder.Encode(new PayloadSample { foo = "pay", bar = "load" }, TimeSpan.FromMinutes(30),
    (x, writer) => writer.Write(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(x))));

解码方法接收delegate T PayloadParser<T>(ReadOnlySpan<byte> payload)ReadOnlySpan<byte>是utf8 json。基于 utf8 的序列化是最好的,虽然也可以使用 JSON.NET(但有编码损失)。

var result = decoder.TryDecode(token, x => JsonConvert.DeserializeObject<PayloadSample>(Encoding.UTF8.GetString(x)), out var payload);

总结:

没有了。下次再会!

下载:
github:https://github.com/Cysharp/LitJWT
如果你不方便使用github,点击下方公众号卡片,关注我,回复litjwt直接下载!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倾斜的水瓶座

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值