почему page.user.identity.name не "" при выходе - PullRequest
1 голос
/ 29 августа 2011

когда я выхожу из системы, значение Page.User.Identity.Name по-прежнему содержит имя пользователя вместо того, чтобы помещать туда пустую строку.кто-то знает почему?Я работаю с Visual Studio 2010, C #

Ответы [ 4 ]

1 голос
/ 30 августа 2011

Если вы использовали шаблоны для создания сайта, то, вероятно, вы используете аутентификацию по формам.

Когда вы нажимаете «Выйти», вам нужно запустить событие с таким кодом внутри

* 1004.*FormsAuthentication.SignOut();

Это должно удалить все необходимые сеансы / куки, связанные с пользователем.

1 голос
/ 29 августа 2011

помимо того, что содержится в имени, я думаю, вы должны заботиться об этом:

if (User.Identity.IsAuthenticated)
{
  // Current user is Authenticated
}
else
{
  // Current user is NOT Authenticated
}
0 голосов
/ 30 августа 2011

Вы смотрите на значение в том же запросе, когда они выходят из системы? Если так, то имя будет там, потому что пользователь все еще аутентифицирован для этого запроса (аутентификация происходит на ранних стадиях в ASP.NET). При следующем запросе вы должны увидеть, что пользователь больше не проходит аутентификацию (искомое значение будет пустым string).

И наоборот, когда вы впервые аутентифицируете пользователя, вы увидите, что текущий запрос не аутентифицирован, но в последующих запросах он будет.

0 голосов
/ 29 августа 2011

У меня была похожая проблема с вами раньше.Я провел какое-то исследование, и это звучало так, как будто это может быть связано с кэшированием страниц.

Мой обходной путь: эта проблема заключалась в перенаправлении на другую страницу (т. Е. Страницу входа или домашнюю страницу).помогает.

...