如何使用.net核心中的JwtSecurityTokenHandler和Compression DEFLATE生成/验证JWT令牌

问题描述 投票:1回答:1

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

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

但在.net核心中,我不知道如何生成一个使用DEFLATE压缩的JWT令牌,类似于java。我希望有一个人可以帮助我。

c# asp.net-core compression jwt
1个回答
1
投票

您可以创建和应用自己的压缩提供程序。例如,要使用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标头中,​​如:

Accept-Encoding: gzip, deflate, sdch, br

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

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.