JSONまたはhtmlを返す多くのajaxアクション(JQuery.ajaxを使用して実装)を備えたアプリケーションがあります。それらのいくつかは、許可されたユーザーだけがアクセスできるようにする必要があり、私はそれらを[Authorize]
属性で装飾しました。ajax以外のアクションの場合、ユーザーが許可されていない場合、システムはユーザーをログインページ(web.configで構成されている)にリダイレクトします。
ただし、これはajaxアクションには適用されません。ユーザーが承認された場合、ページを読み込んだ後、Cookieの有効期限が切れて承認されなくなり、古いものを置き換えるhtmlブロックの代わりに、ブロック内にログインページが表示されます。
この問題を手動で解決できることはわかっています。たとえば、[Authorize]属性を削除し、ユーザーが承認されていない場合は、特別なjson /emptyhtmlを返します。しかし、すべてのアクションとajax関数を書き直す必要があるため、このソリューションは嫌いです。アクションを書き直さないようにするグローバルソリューションが必要です(カスタム承認属性、またはhttpの不正な結果のカスタム処理など)。
リクエストがajaxの場合はステータスコードを返し、リクエストがajaxでない場合はログインページにリダイレクトしたいと思います。