1

asp.net上に作成されたWebアプリケーションがあります。このアプリケーションは、ローカルで実行すると完全に機能します。session を使用して、ユーザーの userId をセッションに保存しました。ログインしたユーザーのみが入力できるようにするすべてのページで、次のようなコードを記述しました。

   protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Session["userID"] == null)
            {
                Response.Redirect("login.aspx");
            }
        }

    }

したがって、セッションにユーザー ID がない場合、ユーザーは自動的にログイン ページにリダイレクトされます。

2 つの問題に直面しています。1. BigRock 共有サーバーにデプロイすると、ユーザーは 5 分後に自動的にログアウトされます。そのサーバーに設定されているセッション タイムアウトが定義されており、これを変更することはできません。ユーザーを自動的にログアウトさせたくありません。

2.Payment GatewayもこのWebサイトと統合されており、ユーザーがチェックアウトをクリックすると、支払いゲートウェイにリダイレクトされますが、支払いの詳細を入力し、トランザクションが完了して応答ページに戻ると、再び自動的にログアウトされます. 5 分が完了したかどうか。これは、ローカルでこの Web サイトを実行したときの状態をテストしたときにも正常に機能します。

すべての助けに感謝します.ありがとうございました!

さらに説明やソースコードが必要な場合はお知らせください。

4

1 に答える 1

2

PG から受け取った order-id に基づいて、いつでもユーザーをログに戻すことができます。通常、PG からの応答はチェックサムによって保護されているため、その信頼性を信頼してユーザーをページに戻すことができます。メソッドを使用してログイン セッションを更新しFormsAuthentication.SetAuthCookie、ユーザーを再ログインするだけです。

あなたの場合、 userdId を Session に直接割り当てているため(私見ですが、ログインを管理するための最良の方法ではありません。検索してみてくださいMembershipProvider)、手順は非常に簡単です。

  1. PG 応答から OrderId を取得します。
  2. 関連する userId を Orders テーブルから取得します (このためには、各ユーザーを注文に関連付ける必要があります。
  3. userId をセッションに保存します。
  4. ユーザーを安全なページにリダイレクトします。

パスワードを要求しないのはなぜですか? 通常、PG からの応答はハッシュによって保護されており、改ざんの影響を受けません。したがって、PG によってリダイレクトされたユーザーの信憑性に安全に賭けることができます。

于 2014-05-06T10:32:02.537 に答える