問題タブ [viewexpiredexception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jsf - Wildfly Openshift の ViewExpiredException
サンプル J2EE webapp を Openshift wildfly 8.1 でホストしていたところ、ViewExpiredException が発生しています。その後、エラーページを提供し、この例外でログインページにリダイレクトします。ログイン ページは、ログインに成功した後も、保護されたページにリダイレクトできません。
これはアプリhttp://wildfly81-sysguard.rhcloud.com でのログイン (user1/1234)です。
以下のコードを見つけてください。
顔-config.xml
web.xml
jboss-web.xml
pom.xml
ログイン.xhtml
LoginPageFilter.java
LoginController.java
security - SecurityFilter と混合された JSF ViewExpired
そのため、ViewExpiredException に関連する回答を確認し、これを Ajax リクエストで処理したところ、うまく処理されました。ただし、ViewExpiredException を適切に取得しない構成があります。
アプリケーションには、各リクエストを監視し、URL が認証されたユーザーを必要とするかどうかを判断し、ユーザーが認証されているかどうかを確認する SecurityFilter があります (セッションでユーザー オブジェクトを調べます)。
問題は、JSF が ViewExpiredException を実際に判断する前にフィルターがリクエストを処理するため、認証されていないため、ログイン ページに転送することです。これは、セッションが期限切れになり、ユーザー オブジェクトがセッションに存在しなくなったために発生します。
セキュリティ フィルタを削除すると、ViewExpiredException が発生します。
私の質問は、承認を検証するために別の手法を使用する必要がありますか? JSFがリクエストを処理できるようにしてから、承認を確認するものですか?
また、投稿の代わりに取得するときにのみ認証をチェックすることも考えましたが、ViewExpiredException を取得しますが、誰かが POST を直接使用すると、認証にギャップが残ります。
最大の問題は、セッションがタイムアウトしたか、ユーザーが許可されていない URL を入力したかをフィルターで判断できないことです。ログインページにリダイレクトされても結果は同じですが、エラーメッセージは特定できません。
注: MyFaces、JSF 2.2、および PrimeFaces を使用しています。
どんな提案でも大歓迎です!
jsf - ViewExpiredException を無視するのは間違っていますか?
1 週間前、私は ViewExpiredException について調べ、それに関するいくつかの記事を読みました。
- viewExpiredException JSF
- すべてのブラウザーで Web ページのキャッシュを制御する方法は?
- JSF/PrimeFaces ajax リクエストでのセッション タイムアウトと ViewExpiredException の処理
私の問題は、場合によっては無視したいと思いViewExpiredException
ます。これらは「セッション」を必要としない状況であり、私の Beans は@RequestScoped
. 例として、ページlogin.xhtml
、register.xhtml
およびpasswordRecovery.xhtml
.
このような場合、セッションの有効期限が切れたというエラーがユーザーに表示されるのは非常に奇妙です。そのため、ログインページを開いてしばらく立ち止まっていると、彼があなたのデータを通知してログインをクリックすると、エラーページに転送されます. 私はそれを無視して、ユーザーに透過的にします。
したがって、これまでの私の解決策は、ExceptionHandler
これらの例外を無視するために a を作成することです。
次に、ユーザーがログインしているかどうかを確認するフィルターを作成し、ログインしていない場合はログイン ページにリダイレクトします (このフィルターは、認証が必要なページのみに適用されます)。
そのため、セッションの有効期限が切れても、ログイン ページと登録ページでのユーザー エクスペリエンスには影響しません。そして、セッションを希望するページでは、フィルターによって処理されます。
それは良い解決策でしょうか?ViewExpiredException
で無視するセキュリティ リスクはありExceptionHandler
ますか?
jsf - JSF の commandLink (h:form) が多すぎると ViewExpiredException が発生する
約 50 件のレポートを作成して表示する JSF アプリケーションを使用しています。これらのレポートは PNG でレンダリングされ、画像の下にテーブルが表示されます。
このテーブルは、switchType="client" を指定した RichFaces 4 の togglePanel を使用しています。togglePanel は、テーブルを折りたたんだり展開したりするためのものです。
問題は、レポートの読み込み時に ViewExpiredExceptions が発生することがあることです。numberOfLogicalViews と numberOfViewsInSession は 14 です。50 に設定したくありません。これは、メモリの問題と、実際には同時に表示されるレポートが 1 つだけであるため必要ではないためです。
logicalView として表示される h:form タグを削除しようとしました。私の意見では、togglePanel はフォームを必要とするアイテムではありません。これは、スイッチ タイプがクライアントであるためです (フォーム タグが必要なサーバーと ajax ではありません)。ただし、コマンドリンクにはフォームタグが必要です。これを削除すると、「このリンクはjsfフォーム内にネストされていないため、無効になっています」というエラーが発生するためです。
そこで、commandLink を commandButton に置き換えてみました。これは最初はうまく機能し、フォームはもう必要ありませんでした。しかし、どういうわけか、動作は完全にランダムになりました。テーブルを展開できる場合もあれば、展開ボタンをクリックしても何も起こらない場合もあります。フォームタグを再度追加すると、正常に動作しますが、ViewExpiredException は解決しません。
誰かがここで私を助けてくれることを願っています...
ご協力いただきありがとうございます!
バントスペクト
jsf - Wildfly 8.2.0 : ViewExpiredException がスローされない
私のページがsecurity-constraint の下にある場合、 Wildfly 8.2.0で実行される JSF アプリケーション (Primefaces 5) はviewExpiredException をキャッチできません。セッションのタイムアウト後にサーバーが javax.faces.application.ViewExpiredException をスローしないようです。
私のweb.xml:
そして私の CustomExceptionHandler :
ワイルドフライのバグですか?グラスフィッシュの下では、上記のコードと構成に問題はありませんでした!
ご協力いただきありがとうございます
jsf-2 - Spring Boot 内の Primefaces PrimeExceptionHandlerELResolver
私はSpring Boot 1.2.4(web、security、data-jpa)、Primefaces 5.2、JSF 2.2(Mojarra 2.2.11)を使用したWebアプリケーションをxml構成ファイルなしで持っています。Spring Bean el resolver の faces-config.xml のみ:
そしてすべて正常に動作します。今、私はプライムフェイス例外ハンドラで ViewExpiredException を処理したい: http://www.primefaces.org/docs/api/5.2/org/primefaces/application/exceptionhandler/PrimeExceptionHandlerELResolver.html
私の質問は、faces-config.xml に別の el-resolver を登録できますか? いいえの場合、どうすれば問題を解決できますか?
前もって感謝します。
編集 :
別のアプロッシュを使用することにしました。Ajax 呼び出しのセッション タイムアウト処理に感謝します
jsf-2 - JSF フォームを別のホストに送信するときの ViewExpiredException
管理者が(管理者ポータルから)任意のユーザーとして(ユーザーポータルで)ログインできるように、管理者用のログイン機能を作成したいと考えています。(これらは、2 つの異なるホストで実行されている 2 つの異なるポータルです)。
管理ポータルで、私は書いています
問題はユーザーポータルにあります。
index.jsf
CustomLogin Bean
CustomLogin Bean はセッション スコープであり、メソッド "customLoginPage" は構築後に呼び出されます。したがって、JSFライフサイクルの「RESTORE_VIEW」フェーズで実行されています。
次のエラーが表示されます:
役立つ可能性のあるweb.xmlコンテンツはほとんどありません
BalusC による ViewExpiredExceptionを読みました。しかし、ここではユーザーポータルへのすべてのリクエストが新鮮です。さらに、javax.faces.STATE_SAVING_METHOD をクライアントに変更すると、「GZIP 例外」が発生します。
jsf - javax.faces.application.ViewExpiredException: ビューを復元できませんでした
単一のビュー index.xhtml を持つモバイル Web アプリケーションがあります。このビューを POST リクエストのみで動的に変更します。基本的に、私の ViewScopedBean はすべて SessionScopedBean です。それがモバイル Web アプリケーションの最適なソリューションであるかどうかはわかりませんが、それはあります (動的更新は、新しいページ全体をリロードするよりも高速に見えます)。
リモートサーバーのIPを使用してモバイルWebアプリケーションにアクセスする場合でも、localhostではすべて問題ありません。動的ビューでドメイン名を使用すると、投稿リクエストで何かを行うと、この例外が発生しました
この例外が発生する理由はわかっていますが、ビューの有効期限が切れた理由はわかりません。どこを見ればいいですか?コードを投稿できましたが、本当に面倒です。
jsf - 更新された html が表示された後、html の代わりに表示されるパーシャル レスポンス
この質問の答えを実装しました: JSF/PrimeFaces ajaxリクエストでのセッションタイムアウトとViewExpiredException処理
AJAX リクエストが完了し、ViewExpiredException が発生すると、ログイン ページに移動するためのリンクがあるセッション期限切れのページがレンダリングされます。しかし、再度ログインすると、次のように表示されます。
F5 を押すと、通常の HTML コンテンツが表示されます。なぜこれが起こっているのですか、どうすれば解決できますか?
編集:明確にするために、ログインすると、ViewExpiredExceptionが発生したのと同じページに移動します。