yunusarmutcu Ответов: 1

Не удается прочитать/записать один и тот же файл cookie для URL-адресов с www и без него в chrome.


Пусть мой сайт будет mysite.com. После того, как пользователи вошли в систему mysite.com а потом попробуй навестить www.mysite.com они должны войти снова. Каким-то образом url-адрес рассматривается по-разному с www и без него.

Как я могу читать/писать один и тот же файл cookie для URL-адресов с www и без него?

Чтобы решить эту проблему, я установил домен моего файла cookie как ".mysite.com"

В Internet Explorer, когда я войти в систему, чтобы www.mysite.com я тоже вошел в mysite.com. Однако он не работает на Chrome.

Что я сделал:

* Установите домен файла cookie как .mysite.com (он был успешно создан)

* Дал имя файлу Cookie, отличному от AUTHASPX.

Я написал следующий код:

<br />
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(<br />
          2,                                     <br />
          username,                      <br />
          DateTime.Now,                         <br />
          rememberMe ? DateTime.Now.AddYears(1) : DateTime.Now.AddHours(1),           <br />
          rememberMe,                               <br />
          loginKey,                              <br />
          FormsAuthentication.FormsCookiePath); <br />
<br />
    // Encrypt the ticket using the machine key<br />
    string encryptedTicket = FormsAuthentication.Encrypt(authTicket);<br />
<br />
    // Add the cookie to the request to save it<br />
    HttpCookie authCookie = new HttpCookie("CookieName", encryptedTicket);<br />
    authCookie.HttpOnly = true;<br />
    authCookie.Expires = rememberMe ? authTicket.Expiration : DateTime.Now.AddHours(1);<br />
    authCookie.Domain = ".mysite.com";<br />
<br />
    response.Cookies.Add(authCookie);<br />
<br />


Аутентификация осуществляется с помощью следующего кода:

<br />
HttpCookie authCookie = Context.Request.Cookies.Get("CookieName");<br />
        if (authCookie == null || string.IsNullOrEmpty(authCookie.Value))<br />
        {<br />
            LogoutAndRedirectToLogin();<br />
            return;<br />
        }<br />
<br />
        FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);<br />
        if (authTicket == null)<br />
        {<br />
            LogoutAndRedirectToLogin();<br />
            return;<br />
        }<br />
<br />
        string loginKey = authTicket.UserData;</pre><br />


Что я уже пробовал:

Установите домен файла cookie как .mysite.com (он был успешно создан)

Дал имя куки, отличное от AUTHASPX.

1 Ответов

Рейтинг:
2

F-ES Sitecore

Посмотрите на эту ссылку, вы найдете другие, если вы google "aspx forms authentication subdomain"

в C# - проверка подлинности с помощью форм на суб-Домены - переполнение стека[^]

Хитрость заключается в том, чтобы изменить "домен" файла cookie auth так, чтобы он соответствовал всему, что заканчивается в вашем домене, так что "www.domain.com-а также ...domain.com-и то и другое работает.