User.Identity.IsAuthenticated false до перенаправления со страницы входа - PullRequest
6 голосов
/ 13 мая 2009

У меня есть страница входа, которая использует членство в ASP.NET. После того как я проверил пользователя, мне нужно сохранить некоторые детали о них в переменных сеанса. Проблема в том, что

Membership.GetUser() == null and 
User.Identity.IsAuthenticated == false 

пока я не ушел со страницы.

Я пытался использовать

FormsAuthentication.Authenticate(tbUsername.Text, tbPassword.Text);

И проверяет User.Identity.IsAuthenticated, но возвращает false, пока я не достигну другой страницы. Есть предложения?

Ответы [ 3 ]

4 голосов
/ 14 мая 2009

Ну, FormsAuthentication.Authenticate() возвращает boolean, так что вы будете знать, была ли аутентификация успешной. Если это так, вы можете передать имя пользователя пользователя в Membership.GetUser() и получить доступ к возвращенному объекту MembershipUser, чтобы получить все необходимые данные и сохранить их в сеансе.

if (FormsAuthentication.Authenticate(tbUsername.Text, tbUsername.Text)) {
   MembershipUser user = Membership.GetUser(tbUsername.Text);
   // Set session variables here.
   FormsAuthentication.RedirectFromLoginPage(tbUsername.Text, rememberMe.Checked);
}
2 голосов
/ 14 мая 2009

Зависит от того, как вы это делаете, но если вы НЕ используете элемент управления ASP Login и выполняете авторизацию самостоятельно, вам нужно установить AuthCookie следующим образом ...

string userName = UserName.Text;
string password = Password.Text;

if (Membership.ValidateUser(userName, password))
{
   FormsAuthentication.SetAuthCookie(userName, true);

   MembershipUser user = Membership.GetUser();

   if(user != null){
      // success
   }
   else{
      // failed
   }
}
0 голосов
/ 14 мая 2009

Если вы не используете элемент управления Login, пытались ли вы вызвать FormsAuthentication.RedirectFromLoginPage (authorizedUserName, createPersistantCookie); и проверка после этого?

Если вы используете элемент управления Login, возможно, на элементе управления есть событие, которое вы можете обработать для получения необходимых данных, например LoggedIn

...