2

アプリケーション用に次のルートを設定しました。

routes.MapRoute("DefaultRedirect",
    "",
    new { controller = "Account", action = "Login" }
);

私のコントローラーには次のものがあります:

[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
    ViewBag.ReturnUrl = returnUrl;
    return View();
}

ただし、ユーザーが既に認証されている場合、アカウントコントローラーとログインアクションには行きたくありません。コントローラーに行く前に認証を確認できる方法はありますか、またはコントローラーをチェックインしてから別のコントローラー/アクションに変更する必要がありますか?

4

1 に答える 1

1

ルート構成でこれを行うことはできないと思います。ASP.NET MVC パイプラインでの認証の前にルーティングが発生するため、ルート構成で切り替えを行うためのコンテキストがありません。ActionResultユーザーが認証されている場合は、別のものを返す必要があります。

[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
    if(User.Identity.IsAuthenticated)
    {
        return RedirectToAction("Index", "Home");
    }

    ViewBag.ReturnUrl = returnUrl;
    return View();
}
于 2013-10-12T19:45:34.830 に答える