C# 如何在.net内核中使用JwtSecurityTokenHandler和压缩DEFLATE生成/验证JWT令牌

C# 如何在.net内核中使用JwtSecurityTokenHandler和压缩DEFLATE生成/验证JWT令牌,c#,asp.net-core,compression,jwt,C#,Asp.net Core,Compression,Jwt,在Java中,我看到,它有选项 JwtBuilder b = Jwts.builder() .compressWith(CompressionCodecs.DEFLATE); 但在.NETCore中,我不知道如何生成一个JWT令牌,它使用DEFLATE进行压缩,类似于java。我希望有人能帮助我。您可以创建并应用自己的压缩提供程序。例如,要使用放气压缩: using Microsoft.AspNetCore.ResponseCompression; using System.IO; usin

在Java中,我看到,它有选项

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

但在.NETCore中,我不知道如何生成一个JWT令牌,它使用
DEFLATE
进行压缩,类似于java。我希望有人能帮助我。

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

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: gzip, deflate, sdch, br
也就是说,如果客户端在
Accept Encoding
头中的请求中发送了
deflate
的值,则此提供程序将工作

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

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

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

public void ConfigureServices(IServiceCollection services)
{
    services.AddResponseCompression(options =>
    {
        options.Providers.Add(new DeflateCompressionProvider());
    });
}
要添加提供程序,将调用
options.Providers.add()
方法