Подтвердить что ты не робот

Cookie сессии ASP.NET - указание базового домена

По умолчанию ASP.NET будет устанавливать свои файлы cookie для использования "mydomain.com" в качестве базы. Я предпочел бы, чтобы они использовали "www.mydomain.com" вместо этого, так что у меня могут быть другие поддомены "sub.mydomain.com", которые не содержат файлов cookie.

Я сделал некоторые копания в объектах Session и Cookie, и пока я могу найти, как установить домен для одного файла cookie, я не вижу способа установить его для всех файлов cookie сеанса.

Кто-нибудь идеи?

4b9b3361

Ответ 1

Создайте ISessionIDManager, так как вы хотите изменить домен cookie, мы разрешим по умолчанию выполнять всю работу.

Этот параметр настроен в файле web.config на элементе sessionState в <system.web>.

<sessionState sessionIDManagerType="MySessionIDManager" />

И реализация.

public class MySessionIDManager: SessionIDManager, ISessionIDManager
{   
    void ISessionIDManager.SaveSessionID( HttpContext context, string id, out bool redirected, out bool cookieAdded )
    {
        base.SaveSessionID( context, id, out redirected, out cookieAdded );

        if (cookieAdded) {
            var name = "ASP.NET_SessionId";
            var cookie = context.Response.Cookies[ name ];
            cookie.Domain = "example.com";
        }
    }
}

Ответ 2

Я понимаю, что это старый вопрос, но вы могли бы использовать атрибут domain раздела конфигурации httpCookies вместо этого в коде

<httpCookies domain="String" 
             httpOnlyCookies="true|false" 
             requireSSL="true|false" />

Ответ 3

В сеансе используется только один файл cookie, поэтому почему вы не устанавливаете домен только для cookie ASP.NET_SessionId?