如何在 ASP.NET 核心中减小 cookie 大小(类似于使用引用模式)?



我正在实现一个使用 cookie 和 WS 联合身份验证的 ASP.NET Core Web 应用程序(如果 cookie 存在并且有效,则使用 cookie,否则如果用户已登录,它会要求身份提供程序提供 SAML 令牌)。

我在 .NET 中的 Web API 项目中设置得很好。对于 cookie 身份验证,我使用System.IdentityModel.Services.SessionAuthenticationModule来提供帮助。更具体地说,它具有我设置为 true 的IsReferenceMode属性,从而允许 cookie 在整个会话期间存储在服务器端缓存中。这只允许在客户端和服务器之间传递对 cookie 的引用,这有助于减小 cookie 的大小。

显然,ASP.NET 核心并不直接支持这System.IdentityModel因为它不兼容。我想知道我是否可以做类似的事情。

我在这里和这里看到过类似的问题,但都没有真正帮助我。

编辑:这篇来自Microsoft文档的关于会话状态的文章和Jan Hajek的这篇博客文章似乎可以为我提供答案。

您可以使用一个简单的 MemoryCacheTicketStore 来实现 ITicketStore 并像这样配置您的 cookie:

services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = IdentityConstants.ApplicationScheme;
options.DefaultChallengeScheme = IdentityConstants.ApplicationScheme;
options.DefaultSignInScheme = IdentityConstants.ApplicationScheme;
})
.AddIdentityCookies(options => options.ApplicationCookie.Configure(configureOptions =>
{
configureOptions.SessionStore = new MemoryCacheTicketStore(ApplicationSettings.Current.AuthenticationTimeOut);
})
);

这是从 GitHub 示例中提取的,请查看它。

相关内容

最新更新