OnActionExecuting
特定の基準に応じて、ユーザーをログアウトし、サイトのホームページにリダイレクトするカスタム アクション フィルターがあります。リダイレクト部分の(取り除かれた)コードは以下のとおりです
filterContext.Controller.TempData.Add("key", "Message");
filterContext.Result = new RedirectResult("/");
上記のように、tempData メッセージも設定しています。ユーザーはログアウトされているため、ホームページにアクセスすると、[Authorize]
属性によってログイン GET ページにリダイレクトされます。ログイン ビューで、tempData 内からのメッセージを表示しています。ただし、この状況では tempData は空です。
これは、ログイン POST の動作と非常によく似た動作です (無効な場合、ホームにリダイレクトされ、ログインにリダイレクトされ、ログイン ポストで設定された tempData メッセージが表示されます)。このコードは以下で見ることができます
TempData.Add("key", errorMessage);
return Redirect("/"));
ログインページに具体的にリダイレクトするのではなく、この方法で行っている理由は、このコードが多くのサイトに分散されているため、ログイン GET URL が何であるかがわからないためです。
これがログイン POST では機能するが、ActionFilter リダイレクトでは機能しない理由について、誰かが情報を持っていますか?
編集:
カスタム アクション フィルター内でログアウト呼び出しを削除すると、tempData は引き続きホーム アクション内に設定されますが、ログイン POST では機能するがアクション フィルターでは機能しない理由が説明されていませんか?