ASP.NET Session Cookies - указание базового домена - PullRequest
18 голосов
/ 24 февраля 2010

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

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

У кого-нибудь есть идеи?

Ответы [ 3 ]

21 голосов
/ 24 февраля 2010

Создайте 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";
        }
    }
}
11 голосов
/ 23 сентября 2010

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

<httpCookies domain="String" 
             httpOnlyCookies="true|false" 
             requireSSL="true|false" />
1 голос
/ 24 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...