我有一个域名,下面有多个网站。
在我的Startup.cs
中,我有以下代码:
public void ConfigureServices(IServiceCollection services)
{
services.AddIdentity<ApplicationUser, ApplicationRole>(options =>
{
options.Cookies.ApplicationCookie.CookieName = "MyAppName";
options.Cookies.ApplicationCookie.ExpireTimeSpanTimeSpan.FromMinutes(300);
})
.AddEntityFrameworkStores<MyDbContext, Guid>()
.AddDefaultTokenProviders();
在生产环境下,我所有的站点都在同一网站的子文件夹中。如果使用默认域作为cookie名称,则不同站点的cookie将具有相同的名称。因此,我不想使用默认域作为cookie名称。
我希望的是获取当前域名(例如mydomain.com),然后将其附加到我在Startup.cs中为每个站点指定的显式cookie名称中。
var domain = "get the server domain here somehow e.g. domain.com";
...
options.Cookies.ApplicationCookie.CookieName = "MyAppName." + domain;
我该怎么做呢?
为什么我要问这个问题:
在Chrome开发者工具中,我可以看到cookie属于我正在访问的站点的不同域名。然而,有时我在两个不同的服务器上登录同一个站点时,会出现无法登录一个服务器且不会显示任何错误的情况。唯一的解决方法是使用另一个浏览器,因此我只能假设这种症状与cookie有关。
所以我的问题实际上是一个个人偏好的问题,因为在我的环境中,我更喜欢将域名附加到cookie名称,尽管cookie只能属于特定的域名。