首页 > 解决方案 > 无法使用 IDistributedCache 缓存 AuthenticateResult 条目

问题描述

如果我们希望缓存 JSON Web Tokens,我们可以使用一个IMemoryCache实现并只存储 的结果JwtBearerHandler.HandleAuthenticateAsync(),即 type AuthenticateResult

问题在于,与IMemoryCache实际存储对对象的引用不同,IDistributedCache存储 a byte[],这意味着我们需要使用序列化来以该形式存储对象。

IDistributedCache已经有将字符串序列化为字节数组的扩展方法,所以我们需要做的就是使用任何 JSON 序列化器来序列化/反序列化数据。

序列化AuthenticateResult对象时,一切都很好。但是当我们想要反序列化它时问题就来了。AuthenticateResult没有无public参数构造函数,这意味着我们实际上无法获取AuthenticateResultback 的实例,即使它已成功存储在缓存中。

是否有解决方法,或者对于这种缓存场景,我们总是被迫坚持IMemoryCache实施?

标签: c#asp.net-corecaching.net-corejwt

解决方案


推荐阅读