Asp.Net Core - 防止相同域应用程序之间的 session cookie 冲突

标签 asp.net session asp.net-core cookies session-cookies

我正在使用 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/

相关文章:

jquery - 如何使这个 JQuery 工作

php - 如何使用 PHP 向某些用户授予访问权限

php - 从 session 日期获取 key 进行查询

c# - 实体类型 'IdentityUserLogin<string>' 需要定义主键

c# - 有没有办法在 ConfigureServices() 中访问强类型设置?

asp.net - 删除 IIS Express 中错误创建的虚拟目录

asp.net - 设计 CMS 以允许完整的页面设计

javascript - 使用jquery和jsonp的ASP.NET跨域Web服务调用错误

ruby-on-rails - Rails 5 和 Devise : How I disable sessions on a Token Based Strategy without Altering the default one

javascript - 客户端相对寻址并允许应用程序 URL 中没有尾部斜杠