Login コントロールの LoggedIn イベントで HttpContext.Current.User.Identity.IsAuthenticated が false を返すのはなぜですか?
正しいユーザー名とパスワードを入力したため、ログインイベントに入っていますが、IsAuthenticated は false です!
Login コントロールの LoggedIn イベントで HttpContext.Current.User.Identity.IsAuthenticated が false を返すのはなぜですか?
正しいユーザー名とパスワードを入力したため、ログインイベントに入っていますが、IsAuthenticated は false です!
これは、ユーザーがログインしてからページがポストされていないためです。ユーザー オブジェクト全体がまだ入力されていません。これは既知の動作です。
この非常に有益なブログ投稿を参照してください。
http://forums.asp.net/t/982749.aspx
また、上記のリンクの功績は、関連する SO QA: Get UserID from ASP.Net Login control LoggedIn イベントにも当てはまります。
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;
}