我正在使用 ASP.Net Core 2.2。
默认情况下, session cookie 存储在名为 .AspNetCore.Session
的 cookie 中。在特定域上(例如: mydomain.com
)。
就我而言,我在域下有多个 .net 核心应用程序。 mydomain.com/Module1
, mydomain.com/Module2
, 等等...
在这种情况下,所有应用程序为其 session 共享相同的 cookie。结果是应用程序尝试读取另一个 session 并在日志中生成警告:
Error unprotecting the session cookie. System.Security.Cryptography.CryptographicException: The key {...} was not found in the key ring.
尽管这只是一个警告并且 session 似乎在每个应用程序上都运行良好,但我想知道处理这种情况的正确方法。
谢谢。
最佳答案
我发现的一个解决方案是更改每个应用程序的 session cookie 名称:
在 Startup / Configure()
:
app.UseSession(new SessionOptions() { Cookie = new CookieBuilder() {
Name = ".AspNetCore.Session.MyApp1"}});
关于Asp.Net Core - 防止相同域应用程序之间的 session cookie 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55806649/