0

マルチフォームデータ送信プロセスの完了中にユーザーがログインすると、プロファイルが既に送信されたデータと照合され、特定のクラスのユーザーにアラートメッセージが表示されるという要件があります。つまり、一部のユーザーはログイン時にポップアップメッセージを受け取ります。

ポップアップは、コードベースの他の場所で同様の機能と一致するAjaxツールキットのModalPopupExtenderを使用します。

私が抱えている問題は、ユーザーが検証されるとすぐに、ユーザーは常に元のページにリダイレクトされるということです。ユーザーにメッセージが表示されるまでこのアクションを一時停止し、ユーザーがクリックしてメッセージを閉じるときにリダイレクトを実行したいと思います。

誰かがこれに対する解決策を提案できますか(.NET 3.5を使用)?

編集

要求されたため、ログインページにはコントロールを含むユーザーコントロールがあります。コントロールは、基本的に以下を呼び出すOnAuthenticateイベントを処理します。

    protected void Login_Authenticate(object sender, AuthenticateEventArgs e)
    {
        bool isValidUser = Membership.ValidateUser(FullLogin.UserName, FullLogin.Password);

        if (isValidUser)
        {
            e.Authenticated = true;
        }
       ...
    }

また、いくつかのビジネスロジックを実行し、ページによって処理される「LogInSuccessful」または「LoginFailed」イベントを発生させるLoggedInイベントも処理します。ログインに成功すると、ユーザーは元のページにリダイレクトされます。

情報ボックスが閉じられたときに呼び出される手動リダイレクトコードをすでにリファクタリングしましたが、フォーム認証がユーザーを自動的にリダイレクトしているようです。これは、オーバーライドしようとしている動作です。

4

1 に答える 1

2

フォーム認証を使用してログインすると、ユーザーはログインフォームに移動し、asp.netによって元のページに戻ります。

ユーザーを認証すると、元のページに戻ります。このページでそれを行う必要がある場合は、このユーザーグループに対して、認証をキャンセルしてからメッセージを表示する必要があります。

protected void Login_Authenticate(object sender, AuthenticateEventArgs e)
    {
        bool isValidUser = Membership.ValidateUser(FullLogin.UserName, FullLogin.Password);

        Session["isValidUser"] = isValidUser;
        if (!Session.ContainsKey("isValidUser"))
        {
            e.Authenticated = false;
        }
        else
        {
          e.Authenticated = (bool)Session["isValidUser"];
        }
       ...
    }

ユーザーが[OK]ボタンをクリックしたら、ユーザーをポストバックして認証する必要があります。これには、セッションでの前の呼び出しからの認証の結果を保存する必要があります。

このメッセージを共通のマスターページに配置し、aspにユーザーを元のページに戻して、そこにメッセージを表示させる方が簡単な場合があります。

于 2012-06-18T09:36:02.190 に答える