CookieTempDataProvider导致CryptographicException

时间:2017-07-05 20:34:02

标签: c# session cookies asp.net-core

我有一个ASP.NET核心应用程序(1.1针对完整框架),它使用TempDataProvider存储有关当前登录用户的一些元数据,例如他们的"显示名称"和应用程序的一些其他首选项。在我的Startup.cs ConfigureServices方法中,我添加了行

services.AddSingleton<ITempDataProvider, CookieTempDataProvider>();

使用(例如)

登录后填充
TempData["DisplayName"] = login.DisplayName;

这很有效,为名为.AspNetCore.Mvc.CookieTempDataProvider的用户创建加密的分块会话cookie。我可以偷看&#34;并按照我的预期清除退出等。但是在一段时间之后 - 也许应用程序池空闲,但浏览器会话保持活动状态 - 我收到一个CryptographicException:

  

System.Security.Cryptography.CryptographicException:在密钥环中找不到密钥{guid}

出现浏览器会话cookie仍然很好,但服务器已经失去了解密和使用它的能力。目前解决的唯一方法是手动清除cookie并让应用程序创建一个新的。

有没有办法防止这种行为?我确实希望cookie的内容难以/不可能伪造,这似乎是实现这一目标的有效机制。

0 个答案:

没有答案