1

フォーム認証を使用するためにインターネット テンプレートから MVC アプリケーションを作成しました。ユーザーがログオンしたときに、ホーム | バージョン情報ページにリダイレクトしたいと考えています。

LogOn メソッドは、変更なしでプロジェクト テンプレートによって作成されたものです。

    [HttpPost]
    public ActionResult LogOn(LogOnModel model, string returnUrl)
    {
        if (ModelState.IsValid)
        {
           // etc, etc
        }

        return View(model);
    }

次のように Web.config で defaultUrl を設定しました。

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" defaultUrl="~/Home/About"/>
</authentication>

ただし、HomeController.LogOn が呼び出されると、returnUrl パラメーターは常に null になります。LogOn メソッドの HttpPost 属性に注意してください。URL をクエリ文字列で渡すことはできません。

LogOn アクション メソッドに渡され、ログオン後にユーザーが URL の場所に誘導されるように、戻り URL を構成するにはどうすればよいですか?

4

1 に答える 1

1

最も簡単な方法は、Global.asax のデフォルト ルートを、/Home/About代わりにポイントするように変更することです。/Home/Index

public static void RegisterRoutes(RouteCollection routes) {
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "About", id = UrlParameter.Optional } // Parameter defaults
    );
}
于 2012-06-21T00:12:04.820 に答える