【发布时间】:2018-08-31 18:22:55
【问题描述】:
在Java中,我看到了,它有选项
JwtBuilder b = Jwts.builder()
.compressWith(CompressionCodecs.DEFLATE);
但在 .net 核心中,我不知道如何生成使用 DEFLATE 压缩的 JWT 令牌,类似于 java。我希望有人可以帮助我。
【问题讨论】:
标签: c# asp.net-core compression jwt
在Java中,我看到了,它有选项
JwtBuilder b = Jwts.builder()
.compressWith(CompressionCodecs.DEFLATE);
但在 .net 核心中,我不知道如何生成使用 DEFLATE 压缩的 JWT 令牌,类似于 java。我希望有人可以帮助我。
【问题讨论】:
标签: c# asp.net-core compression jwt
您可以创建和应用自己的压缩提供程序。例如,要使用 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
也就是说,如果客户端在Accept-Encoding 标头中的请求中发送了deflate 的值,则此提供程序将起作用。
SupportsFlush 属性指定记录是否重置为流。
CreateStream () 方法在压缩或实际包裹作为参数传递给该方法的初始响应线程之后返回响应流本身。对于压缩,使用内置类 DeflateStream()。
在Startup 类的ConfigureServices() 方法中应用此提供程序:
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCompression(options =>
{
options.Providers.Add(new DeflateCompressionProvider());
});
}
要添加提供程序,请调用 options.Providers.Add() 方法。
【讨论】: