Установите для проверки подлинности значение true для представления элемента управления, который выполняет проверку подлинности в ASP.Net MVC. - PullRequest
0 голосов
/ 02 июня 2009

В контроле аутентификации у меня есть следующая строка, чтобы пометить пользователя как аутентифицированного в системе (после проверки пароля):

FormsAuth.SignIn(userName, rememberMe);

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

Page.User.Identity.IsAuthenticated
Request.IsAuthenticated

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

Ответы [ 3 ]

3 голосов
/ 02 июня 2009

FormsAuth.SignIn - это функция, которая генерируется при создании нового проекта ASP.NET MVC из Visual Studio.

Эта функция просто вызывает FormsAuthentication.SetAuthCookie , которая в соответствии с документами устанавливает cookie-файл аутентификации в ответе .

Это объясняет, почему это работает, если вы перенаправляете (потому что клиент будет воспроизводить cookie в последующем запросе), но не сразу после вызова.

Перенаправление - это правильный / обычный способ сделать это, но если вы абсолютно настаиваете на проверке аутентификации перед перенаправлением, то вы можете создать флаг IsAuthenticated в состоянии сеанса и ссылаться на него при проверке.

0 голосов
/ 11 октября 2010

В дополнение к использованию FormsAuth.Signin или FormsAuthentication.SetAuthCookie, вы также можете установить User.Identity вручную в элементе управления входом при выполнении кода входа. Как написано выше, причина в том, что FOrmsAuth.SignIn просто устанавливает cookie-файл для аутентификации, который будет получен в следующий раз в событии Request_OnAuthenticate. (Который просто декодирует cookie и устанавливает свойство HttpContext.User)

0 голосов
/ 02 июня 2009

На ваших контроллерах вы сможете использовать следующее, чтобы проверить, аутентифицированы ли они.

User.Identity.IsAuthenticated;

Я бы хотел убедиться, что ваш AccountController правильно сохраняет объект Principal при перемещении со страницы на страницу.

...