5

ajax アプリケーションにフォーム認証を実装しようとしています。私が抱えている問題は、セッションの有効期限が切れると、web.xml で指定したログイン ページにリダイレクトされる 302 コードを取得することです (そして、アプリ全体をログイン ページに更新するすべてが台無しになります)。

私がしたいのは、「認証されていない」(401) コードを取得し、ポップアップ ウィンドウにログイン フォームを表示し、ログインが成功したら、私が行っていたことを続行することです。

ここに何が起こっているかの写真があります: http://docs.oracle.com/javaee/1.4/tutorial/doc/images/security-formBasedLogin.gif

およびドキュメント http://docs.oracle.com/javaee/1.4/tutorial/doc/Security5.html

基本的に、ログインページにリダイレクトする代わりにポップアップを表示し、リソースへのリダイレクトは行わず、AJAX の方法で更新を行いたいと考えています。私が理解していることから、リダイレクトは回避できないため、クライアント側でのみ実行することはできませんでした (ここを参照してください:リダイレクト情報)。リダイレクトを防ぐために、サーバーに何らかのロジックを記述する必要があります。 IISでの実行の詳細: IIS の実装

PS これまでのところ、 http://www.oracle.com/technetwork/articles/entarch/session-lifecycle-096133.htmlが最も有望な実装方法のようです。このクラスは非推奨ですが、新しいクラスが見つからず、Weblogic でこれを行う唯一の方法だと思います。

4

5 に答える 5

1

これは簡単な方法ではありませんが、それでも機能します

ページにユーザーが入力するフォームがあります。

ユーザーが送信ボタンをクリックします。

ajax リクエストがサーバーに送信されます。

サーバー側の実装は、セッションが存在するかどうかを確認できます。したがって、応答コード 401..(response.setStatus()); を送信できます。

この 401 は、ajax --- xhr.status を使用してクライアント側で確認できます。

応答が 401 の場合、ログイン フォームを表示し、現在のフォームを非表示にすることができます。js と css を使用します。

ユーザーはログインの詳細を入力し、[送信] をクリックします。

そのログイン要求のステータスについて、同じサーバー側のチェックとクライアント側のチェックを行うことができます。

ログインに成功したら、ajax または js を使用して最初のフォームを送信できます。

于 2012-11-21T13:15:43.160 に答える
1

「 weblogic.xml デプロイメント記述子の要素」で説明されているように、サーブレット認証フィルタを使用する必要がある場合があります。

以下のチュートリアルが役立つかもしれません:
oracle サーブレット認証フィルター
ユーザー認証のためのサーブレットフィルターの使用 サーブレットフィルターの
記述

于 2012-11-26T13:00:57.333 に答える
0

サーバーへのajaxリクエストでハートビートチェックを使用して、それを取得するために認証が必要なリソースに..このリソースを受信できない場合は、ログインしていないことを意味します..別の認証リクエストを送信できますあなたのレンダリングで..

この記事を参照してください.. http://ajaxpatterns.org/archive/Heartbeat.php

したがって、認証のチェックルーチンが実装されます..

于 2012-11-24T16:09:08.200 に答える
0

poll ではなく、ページにプッシュする必要があります。したがって、Strophe とセッション ハンドラを接続する必要があります。セッションが期限切れになると、Web アプリで実行されている Strophe インスタンスにシグナルが送信され、その後、ポップアップなどを簡単に実行できます。すべてのリアルタイムのものには、ストロフェを使用しています!

これはこのメッターに関する本で、これはStrophe へのリンクです。また、これは php xmpp クラスのリンクです。

これを理解するのに数日かかりますが、2、3日は十分に費やされています! 本を注意深く読んで例に行くと、基本的な javascript/jquery を理解するだけで、強力な Web アプリを開発できるようになります。

于 2012-11-24T19:31:24.417 に答える
-1

あなたが ajax アプリケーションで FORM 認証を行おうとしていることは知っていますが、それは本当に必要なのでしょうか?

BASIC 認証は、アプリではなくブラウザーによって処理されるため、ajax 要求に対してよりシンプルかつ透過的に機能します。しかし、ポップアップが醜いことは認めます/理解しています。

于 2013-04-17T08:36:23.667 に答える