0

この MVC アプリケーションでは、ユーザーがログインした後、前回のセッションで最後にアクセスしたページにリダイレクトされるようにします。

これを達成するための良いアプローチは何ですか?

私は考えていますhttpmodule-->begin request or via the global.asax

そして、リクエストプロセスのどの時点で、Cookie が存在するかどうかを確認してリダイレクトを行うロジックを配置する必要がありますか? でApplication.init

アドバイスをいただければ幸いです。

4

2 に答える 2

1

現在要求されている URL を Cookie に保存するカスタム アクション フィルターを作成できます。次に、ログイン アクション メソッドで Cookie の値を確認し、必要に応じてリダイレクトします。

これを行うことで、潜在的なエントリ ポイントとなるコントローラーとアクションのみをデコレートできます。たとえば、部分ビューなどを返すアクションではありません。

于 2011-04-18T10:34:16.487 に答える
0

正解です。クリック時にイベントは発生しません。ただし、はるかに単純な解決策があり、MVCはフォームの送信とリダイレクトを非常にうまく処理します。最後にアクセスしたURLを保存するには、コントローラーでアクションフィルターを使用できます。次に、リダイレクトを処理するために、2つのログイン関数を作成します。1つはGETリクエストを処理し、もう1つはPOSTリクエストを処理します。POSTリクエストでは、認証を確認した後、CookieからURL(またはアクション)を取得し、ユーザーをリダイレクトします。

これは次のようになります。

[HttpGet]
public ActionResult Login()
{
    return View();
}

[HttpPost]
public ActionResult Login(LoginViewModel model)
{
    if (authenticated)
    {
        //get cookie information
        HttpCookie cookie;
        cookie = Request.Cookies["StoredURLFromLastSession"];
        String StoredURLFromLastSession = cookie.Value;

        //Choose one of these redirect methods
        //returns to a hard coded URL
        //return Redirect(StoredURLFromLastSession);

        //redirects to a route (using routes created in global.asax
        //return RedirectToRoute(StoredURLFromLastSession);

        //redirects to a specific action/controller
        //return RedirectToAction(StoredURLFromLastSession);
    }
}

お役に立てれば。

于 2011-04-18T10:42:03.743 に答える