1

ログインページがあるMVC3でアプリケーションを開発しています。ユーザーがページにログインすると、ブラウザの戻るボタンをクリックすると問題が発生し、望ましくないログインページに戻ります。

簡単に言うと、Facebook、Gmail、およびそれらのような他の Web サイトとまったく同じように機能するログイン機能が必要です。

私が取り組んでいる方法の 1 つは、ログイン後にブラウザの [戻る] ボタンを制御する方法を見つけ、それがクリックされた場合に、ユーザーを同じログイン ページにリダイレクトすることです。私は多くの研究を行ってきましたが、何もうまくいかないようでした。

どれでも大歓迎です。前もって感謝します。

4

3 に答える 3

4

Darinが提供するソリューションは機能しますが。しかし、私に言わせれば、Facebook はそのソリューションを実装していません。適切な解決策を実装するのはそれほど難しくないと思います。2 つのことを行う必要があります。

認証されたユーザーがログインページにアクセスできないことを確認してください。

次のように login get メソッドを変更できます

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public ActionResult Login(LoginModel model, string returnUrl)
    {
        //Important
        if (Request.IsAuthenticated) 
        {
            return RedirectToAction("Action", "Controller"); // ur action and controller
        }

        if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
        {
            return RedirectToLocal(returnUrl);
        }

        // If we got this far, something failed, redisplay form
        ModelState.AddModelError("", "The user name or password provided is incorrect.");
        return View(model);
    }

ログインページがキャッシュされていないことを確認してください

このコードを上記のメソッドに挿入して、ロジック ページがキャッシュから返されないようにします。

Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
Response.Cache.SetValidUntilExpires(false);
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();

NoCacheまたは、Login メソッドで ActionFilter を使用できます。上記と同じことを行います。

于 2013-06-22T14:01:47.653 に答える
3

次のスクリプトをログイン ビュー (ユーザー名とパスワード フィールドを含むビュー) に配置できます。

<script type="text/javascript">
    window.history.forward();
</script>
于 2013-06-22T10:19:29.760 に答える
0

ログイン httpget アクションに NoCache アクション フィルタがあり、ブラウザがキャッシュしないようにしている場合、ユーザーが [戻る] ボタンを使用して戻った場合、ブラウザは新しいログイン ページを要求し、コントローラー アクション コードはユーザーが既にログインしていることを検出できます。認証され、別のページにリダイレクトされます。

于 2013-06-22T13:52:55.650 に答える