2009-09-02 13 views
5

私はASP.NET MVCアプリケーションを開発しています。これは、ajax呼び出し中に検出された期限切れの.NETフォーム認証Cookieを処理する最も良い方法であると思います。期限切れの.NETフォーム認証coookieをajax呼び出しで処理する最も良い方法は?

クッキーの有効性に関する情報を含むJsonResultにajaxレスポンスをパックするのが最適な解決策だと思いますか?

答えて

2

私の好みの方法は、セッションが期限切れになったというメッセージをポップアップし、ログイン後に現在のページに戻すログインページにリダイレクトすることです。

+0

これは、最も簡単で安全なアプローチです。 – Paul

0

あなたが使用しているAjaxフレームワークがわかりませんが、ほとんどの場合(asp.net ajaxを含む)はonError関数を指定することでサーバー例外を処理します。

Namespace.Object.Method(VAR1、VAR2、するonSuccess、onErrorを){..}など。

あなたはasp.netセッションを管理し、問題のページが認証されたユーザーに対して有効になっている限り許可すればフレームワークは期限切れになると無効なセッション例外をスローします(正確には忘れてしまいます)

内のonError例外タイプを確認してログインページにリダイレクトできます。実際には、現在のページをリロードして、.netがログインページにリダイレクトするだけです。 document.location.href = document.location.href; (これは現在のページを再読み込みし、送信されたフォームデータを無視します)

1

これで本当に魅力的な人がいます。 onErrorのAJAXが無効なセッションである場合、あなたのログインビューがラップされたモーダルポップアップ(lighboxフォーム)を開く。ユーザーがモーダルからログインできるようにすると、フォームデータが失われず、サイト全体にリダイレクトされません。おそらく、彼らはしかし、自分のデータを再投稿しようとする必要があります。いくつかやっているかもしれませんが、最終的にはエンドユーザーにとってよりシームレスなものだと思います。

PS - 私はDigg.comタイプのログインインタフェースを考えています。コメントを追加するをクリックすると、モーダルポップアップが表示されます。

+0

この方法を行う場合は、すべてのログインのように、リクエストがHTTPS接続を経由していることを確認してください。あなたのメインページがHTTPSでない場合は、JSの同じ起点ポリシーを回避する必要があります。 – Paul

+0

私はHTTPSに同意しますが、Lightboxを使用すると、私はあなたが同じ起源について心配する必要はないと思います。実際のWebページを呼び出して、IFrameに相当する金額で開き、フォームに記入し、フォームを投稿して、.NETでCookieを設定します。 2つのページの間にJS呼び出しがないので、IFrameログインページからCookieが設定された後にフォームを再送信する必要があります。これで、同じオリジンを使用したい場合は、ログインが成功した後に自動的にフォームを提出することができます。 – Tommy

関連する問題