c# - 如何在 .net core 中使用 JwtSecurityTokenHandler 和 Compression DEFLATE 生成/验证 JWT token

标签 c# asp.net-core compression jwt

在Java中,我看到它有选项

JwtBuilder b = Jwts.builder()
.compressWith(CompressionCodecs.DEFLATE); 

但是在.net core中,我不知道如何生成一个用DEFLATE压缩的JWT token ,类似于java。我希望有人能帮助我。

最佳答案

您可以创建并应用自己的压缩提供程序。例如,要使用 Deflate 压缩:

using Microsoft.AspNetCore.ResponseCompression;
using System.IO;
using System.IO.Compression;

namespace CompressionApp
{
    public class DeflateCompressionProvider : ICompressionProvider
    {
        public string EncodingName => "deflate";
        public bool SupportsFlush => true;

        public Stream CreateStream(Stream outputStream)
        {
            return new DeflateStream(outputStream, CompressionLevel.Optimal);
        }
    }
}

EncodingName 属性指定客户端支持的压缩格式。此格式包含在向服务器发出的请求的 Accept-Encoding header 中,例如:

Accept-Encoding: gzip, deflate, sdch, br

也就是说,如果客户端在请求的 Accept-Encoding header 中发送了 deflate 值,则该提供程序将起作用。

SupportsFlush 属性指定是否将记录重置为流。

CreateStream () 方法在压缩或实际包装作为参数传递给该方法的初始响应线程后返回响应流本身。对于压缩,使用内置类 DeflateStream()。

Startup 类的 ConfigureServices() 方法中应用此提供程序:

public void ConfigureServices(IServiceCollection services)
{
    services.AddResponseCompression(options =>
    {
        options.Providers.Add(new DeflateCompressionProvider());
    });
}

要添加提供程序,请调用 options.Providers.Add() 方法。

关于c# - 如何在 .net core 中使用 JwtSecurityTokenHandler 和 Compression DEFLATE 生成/验证 JWT token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52113069/

相关文章:

c# - 如何使用 C# 在列表框中水平显示数组项?

c# - 将数字限制在下限和上限/限制之间的最佳方法

c# - byte[] 到 C# .NET Core 中的字符串

json - 如何在 Asp.net Core Web Api 中默认使用 Newtonsoft.Json?

C#:使用 aforge.net 进行视频压缩

c# - 将派生类永久转换为基类

c# - 如何根据每个请求更改 JsonSerializerSettings

c# - 仅当服务存在时,如何才能在 blazor 中注入(inject)服务?

c++ - 如何使用 zlib 解压 gzipstream

c - 为什么要排列代码长度代码(动态霍夫曼代码 | RFC-1951)?