誰かが Web ページの段落を編集できるアプリケーションを作成しています。jQuery を使用して、編集された段落データをハンドラーに送受信し、ハンドラーはデータを保存またはデータベースから読み取ります。問題は、フォーム認証がタイムアウトした場合、ハンドラーからログイン ページが返されることです。認証がタイムアウトした場合にクライアントまたはサーバーで検出し、ページ全体をログイン ページにリダイレクトする方法はありますか?
1846 次
2 に答える
1
私は最近、401を処理する方法を完成させましたが、これはあなたにも役立つと思います。.NETの過去のバージョンの問題は、エラーページが適切なエラーコードを返さず、指定されたページに302だけ戻ることです。
.NET 3.5では、redirectModeを使用して、エラーハンドラーで「リダイレクト」の代わりに「書き換え」を行うことができます。
<customErrors mode="On" defaultRedirect="/err.aspx" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="/404.aspx"/>
</customErrors>
すべてのリクエスト(Webサービス呼び出しを含む)が適切なHTTPステータスコードを返すようになったため、JavaScriptで404/401/500コードを適切に使用できます。
次に、クライアントコードで(これはjQueryにあり、401だけでなく、エラーが発生した場合にリダイレクトされます):
$(document).ajaxError(function(event, XMLHttpRequest, ajaxOptions, thrownError) {
window.location.href('/error.aspx');
});
于 2009-09-29T19:22:10.347 に答える
1
私のアプリケーションでは、クライアント側で、返されたページの HTTP ステータスを確認します。401(Unauthorized Error)の場合、モーダルダイアログでログインフォームを提示します。そのように再認証するか、単にリダイレクトすることができます
window.location = 'http://someurl.com';
これには 401 を返すサーバーの協力が必要ですが、これが最もクリーンな方法のように思えます。
于 2009-01-14T15:01:58.097 に答える