0
ユーザーがセッション変数として保存されるようにカスタム認証が設定されています。彼らはアカウント/ログインプロセスを経るたら私はこのようなセッションにユーザーとしてサードパーティのAPIから返された詳細情報を格納します。MVCのカスタム認証
Session["User"] = new UserViewModel(result);
私は、ユーザーを確認したいが、私が持っているので、すべてのコントローラのアクションの前に存在していますその中に次のチェックでBaseControllerを作っ:ユーザが存在しない場合は、ページのログインにリダイレクトするよう
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (Session["User"] != null)
base.OnActionExecuting(filterContext);
else
filterContext.Result = new RedirectToRouteResult(new System.Web.Routing.RouteValueDictionary(new { action = "LogIn", controller = "Account" }));
各コントローラ、その後BaseControllerから継承されます。私はAccountControllerのBaseControllerを継承していないので、チェックとリダイレクトの無限ループに陥ることはありませんが、特定のページにログインをチェックしないようにしたいのです。 [AllowAnonymous]と同じ方法で例外ルールを記述しますか?あなたのように、これらの方法でフィルタを使用することができ
コントローラ上で、その後
は、などの属性を置きますカスタムのAuthorize属性を作成し、このチェックを実行するコントローラにのみ適用してみましょう。 – Alex
ActionFiltersの代わりにAuthorize属性をオーバーライドする –