フロントエンドとバックエンドを備えたMVC3Webアプリケーションがあります。バックエンドでは、各アクションは、ユーザーがログインしていない場合(セッションをチェックする場合)に別のアクションにリダイレクトするif..then..elseで保護されます。これは、Windowsの役割なしで実行されます。
各アクションに同じコードを何度も挿入しなくても、チェックを実行してユーザーをログインページにリダイレクトする属性を作成できるかどうか疑問に思いました。
編集#1
管理者コントローラーが派生したベースコントローラーを作成し、ウイルスが言ったことに続いて次のメンバーを追加しました。
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
try
{
if (Session["loggedIn"] == null || (bool)Session["loggedIn"] != true)
{
TempData["targetAction"] = ControllerContext.ParentActionViewContext.RouteData.Values["action"] + "/" + ControllerContext.ParentActionViewContext.RouteData.Values["controller"];
RedirectToRoute("Admin/Login");
}
}
catch (NullReferenceException)
{
RedirectToRoute("Admin/Login");
}
}
しかし、このコードは機能しません。誰かが何が悪いのか教えてもらえますか?