синхронизирующие cookie и сессии в различных субдоменах (asp.net)

Первый подход определяет общий словарь, значения которого являются общим списком, что означает, что он может хранить значения любого типа. Это также используется при определении таблиц, так как таблицы могут хранить столбцы с различными типами.

Во втором подходе, когда вы вставляете первое значение в словарь, он устанавливает тип списка значений словаря для этого типа элемента. Так что теперь это простой список.

  q) d2: ()!()
  q) d2[`t1]:2017.01.01
  q) type value d2  / 14h

Это означает, что теперь значения словаря не могут быть общим списком и могут хранить только элементы типа даты.

Чтобы создать общий словарь (в котором хранится общий список в качестве значений), введите значение первой записи как ноль (: :). Это то, что используется словарями пространства имен.

  q)  d2: ()!()
  q)  d2[`]:(::) 

Теперь он может хранить любое значение.

  q) d2[`t2]:2018.01.01
  q) d2[`idx]:42
10
задан 14 January 2009 в 18:19
поделиться

4 ответа

При создании cookie, можно установить домен:

HttpCookie cookie = new HttpCookie("name", "value");
cookie.Domain = "cookies.com";

Это разрешит Ваши куки, чтобы быть доступным от всех субдоменов cookies.com.

При использовании FormsAuthentication затем, можно установить домен для подлинного cookie в web.config:

<forms name=".ASPXAUTH"
       loginUrl="login.aspx"
       defaultUrl="default.aspx"
       protection="All"
       timeout="30"
       path="/"
       requireSSL="false"
       domain="cookies.com">
</forms>

Помните что, чтобы единая точка входа работала над несколькими субдоменами, Ваши приложения ASP.NET должны совместно использовать те же ключи машины, как объяснено в этой статье CodeProject.

Совместное использование сессий между различными субдоменами (различные рабочие процессы) является более трудным, потому что сессии ограничиваются к приложению, и необходимо будет реализовать пользовательский механизм синхронизации сессии.

8
ответ дан 3 December 2019 в 20:44
поделиться

Да, необходимо использовать ".cookies.com" не "cookies.com"

1
ответ дан 3 December 2019 в 20:44
поделиться

Если вы хотите синхронизировать сеанс ASP.NET и не используете проверку подлинности с помощью форм (например, на вашем сайте нет входа в систему), попробуйте добавить следующий код в файл Globals.asax . Это сработало для меня как чемпион и избавило меня от серьезного горя.

protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e)
{
  /// only apply session cookie persistence to requests requiring session information
  #region session cookie

  if (Context.Handler is IRequiresSessionState || Context.Handler is IReadOnlySessionState )
  {
    /// Ensure ASP.NET Session Cookies are accessible throughout the subdomains.
    if (Request.Cookies["ASP.NET_SessionId"] != null && Session != null && Session.SessionID != null)
    {
      Response.Cookies["ASP.NET_SessionId"].Value = Session.SessionID;
      Response.Cookies["ASP.NET_SessionId"].Domain = ".know24.net"; // the full stop prefix denotes all sub domains
      Response.Cookies["ASP.NET_SessionId"].Path = "/"; //default session cookie path root         
    }
  }
  #endregion    
}

Я нашел это первоначально размещенное здесь: http://www.know24.net/blog/ASPNET+Session+State+Cookies+And+Subdomains.aspx

9
ответ дан 3 December 2019 в 20:44
поделиться

Я верю, делают cookie для http://cookies.com. (Никакой субдомен или перечисленный www)

0
ответ дан 3 December 2019 в 20:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: