2

Login コントロールの LoggedIn イベントで HttpContext.Current.User.Identity.IsAuthenticated が false を返すのはなぜですか?

正しいユーザー名とパスワードを入力したため、ログインイベントに入っていますが、IsAuthenticated は false です!

4

2 に答える 2

4

これは、ユーザーがログインしてからページがポストされていないためです。ユーザー オブジェクト全体がまだ入力されていません。これは既知の動作です。

この非常に有益なブログ投稿を参照してください。

http://forums.asp.net/t/982749.aspx

また、上記のリンクの功績は、関連する SO QA: Get UserID from ASP.Net Login control LoggedIn イベントにも当てはまります。

于 2012-10-31T19:38:41.030 に答える
2

Application_AuthenticateRequestページのライフサイクルの非常に早い段階で発生します。

イベントに参加している場合LoggedIn、ユーザーは既に認証されていると想定できます。

ログインしているユーザーのユーザー名が必要な場合は、次のように取得できます-

protected void LoginUser_LoggedIn(object sender, EventArgs e)
{
    var usernameTextBox = (TextBox)LoginUser.FindControl("UserName");
    string username = usernameTextBox.Text;

    MembershipUser user = Membership.GetUser(username);
    Guid userId = (Guid)user.ProviderUserKey;
}
于 2012-10-31T19:52:49.910 に答える