Невозможно выйти из системы после указания параметра «домен» в «аутентификации» файла web.config - PullRequest
4 голосов
/ 22 марта 2011

У меня есть обработчик выхода из системы, который работал нормально:

    public void ProcessRequest(HttpContext context)
    {
        //// Sign out
        System.Web.Security.FormsAuthentication.SignOut();

        //// Clear Session
        if (context.Session != null)
        {
            context.Session.Clear();
        }

        /// Expire all the cookies so browser visits us as a brand new user
        List<string> cookiesToClear = new List<string>();
        foreach (string cookieName in context.Request.Cookies)
        {
            HttpCookie cookie = context.Request.Cookies[cookieName];
            cookiesToClear.Add(cookie.Name);
        }

        foreach (string name in cookiesToClear)
        {
            HttpCookie cookie = new HttpCookie(name, string.Empty);
            cookie.Expires = DateTime.Today.AddYears(-1);

            context.Response.Cookies.Set(cookie);
        }
        context.Response.Redirect("~/default.aspx");
    }
}

Как только я добавил параметр "домен" в раздел аутентификации web.config:

        <forms timeout="50000000" 
               loginUrl="~/login" 
               domain='mysite.com'/>

... он больше не выходит из системы - после его перенаправления в "~ / default.aspx" я все еще вижу, как пользователь вошел в систему (я ставлю точку останова на событие Load этой страницы и проверяю HttpContext.Current .User.Identity.IsAuthenticated, и все еще = true).

Затем я удаляю "domain = 'mysite.com'", и он без проблем выходит из системы.

Мне нужно указать домен, потому что я добавил поддомен с собственным приложением, но я хочу, чтобы он разделял файл cookie аутентификации.

Любые идеи высоко ценятся!

Ответы [ 2 ]

1 голос
/ 01 апреля 2011

Когда я восстанавливаю файлы cookie с истечением срока действия, мне нужно указать домен:

cookie.Domain = FormsAuthentication.CookieDomain;

Это решает проблему.

0 голосов
/ 22 марта 2011

Пожалуйста, укажите domain =".mysite.com"

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