Сеанс ASP.NET MVC по поддоменам - PullRequest
3 голосов
/ 24 марта 2010

На моем веб-сайте я реализовал пользовательские значения сеанса. В котором при входе в систему я устанавливаю значение сеанса для какого-либо объекта. Этот объект используется для извлечения пользовательских данных из базы данных.

Теперь проблема в том, что если пользователь входит в систему с: test1.somesite.com и выходит из системы, а затем снова входит с: test2.somesite.com, этот пользователь все еще получает данные от объекта, специфичного для test1.somesite.com.

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

при выходе из определенного домена я очистил все сеансы (попробовал все): поместив HttpContext.session ["UserDetail"] = null ;, HttpContext.Session.Abandon (), а также HttpContext.Session.Clear ();

но, похоже, ничего не работает

и я также не очень понимаю, как переменные сеанса обрабатываются в поддоменах.

Я имею в виду, если я инициализирую сеанс с одним значением, посетив test1.somesite.com, будет ли это значение также отображаться, если на том же компьютере и в том же браузере я также открою test2.somesite.com.

любая помощь, пожалуйста

Ответы [ 2 ]

1 голос
/ 24 марта 2010

Звучит как проблема с печеньем. Попробуйте очистить сессионный cookie. Что-то вроде:

if (!User.Identity.IsAuthenticated)
{
    if (Request.Cookies["ASP.NET_SessionId"] != null)
    {
        Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddDays(-1);
    }
    Session.Abandon();
}
0 голосов
/ 06 января 2012

Что вам нужно сделать, это установить cookie-файл идентификатора сеанса asp.net для записи в домен с подстановочными знаками.

Response.Cookies ("ASP.NET_SessionId"). Domain = "yourdomain.com" // или "* .yourdomain.com"

Чтобы cookie мог распространяться на ваши субдомены.

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