3

Visual Studio にあるテンプレートを使用して、新しい asp.net Web アプリケーションを作成しました。aspnet_regsqlそのタイプのプロジェクトは、データベースを操作するコマンドで構成した、すぐに使用できるログインを作成します。

これで、誰かがアプリケーションにログインしたときに、ログインが成功したかどうかを知る必要があるため、Session['']特にユーザー名を保存できます。

true または false を返すメソッドを見つけることを期待していましたが、代わりに Login.aspx.cs にPage_Loadメソッドがあり、それがどのように機能するかわかりません。

コントロールの値を取得するonclickメソッドを関連付けてみましたUserNameが、明らかに、ユーザーが初めてログインしたときにのみ機能し、ユーザーが「次回は私を記憶する」をチェックすると機能しません。

4

2 に答える 2

2

ユーザーが認証されるとAuthenticateRequestイベントが発生しますが、このイベントではまだ SessionState にアクセスできません。したがって、を保存するには、アプリケーション イベントSessionを考慮する必要があります。PostAcquireRequestState

IIS 7.0 の ASP.NET アプリケーション ライフ サイクルの概要

IIS 5.0 および 6.0 の ASP.NET アプリケーション ライフ サイクルの概要

追加情報:

例:

global.asax 内

    void Application_PostAcquireRequestState(object sender, EventArgs e)
    {
        if (Context.Session != null)
        {
            Application.Lock();
            Session["user"] = User.Identity.Name;
            Application.UnLock();
        }
    }

さらに、 を使用している場合は、イベントLoginControlを処理できます。LoggedIn

ASPX

    <asp:Login runat="server" ID="login" DestinationPageUrl="~/Default.aspx" 
        FailureAction="RedirectToLoginPage"
        onloggedin="login_LoggedIn" ...>
     ....

ASPX コードビハインド

protected void login_LoggedIn(object sender, EventArgs e)
{
    // set the Session here
}
于 2012-07-31T04:37:27.913 に答える
1

aspx Web プロジェクト テンプレートasp:Loginは、認証を行うコントロールを利用します。

ログインをカスタマイズする必要がある場合は、独自のユーザー名/パスワード入力をロールバックしてから、メンバーシップ API を直接呼び出すことができます。

if (Membership.ValidateUser(username, password))
{
    FormsAuthentication.SetAuthCookie(username, rememberMe);
    // Do your custom stuff here

...

を使用して、ユーザーが認証されているかどうかを確認することもできます。

UserPrincipal.Identity.IsAuthenticated

詳細については、 MSDNを参照してください

于 2012-07-31T04:41:34.320 に答える