問題タブ [spring-aspects]
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.
spring - Spring AOP の Aspect を使用して非常に複雑な監査ロギングを行う方法は?
Spring Web アプリケーションを構築しています。Spring AOP のアスペクトを使用して監査ロギングを行います。
次のようなメソッドを持つビジネス クラスがあり、特定の場合にログを監査したい
- メソッド実行中
メソッドが戻った後
/li>
別のクラスで定義されたアスペクトを既に取得しています。
ここや他の記事で見た一般的な単純な例はすべて非常に単純に見えたため、問題が発生しています。たとえば、私が見た中で最も複雑なのは、メソッド パラメーターをアスペクトのアドバイスに抽出するところまでしか進まないため、簡単に機能します。
しかし、ここでの問題は、アスペクトのアドバイスにローカル変数を抽出するだけでなく、特定の条件に基づいて監査ログを複数回実行したくないということです。
誤解しないでください。同じ場所にあるファイルにログを記録する Log4j ログが既にありますが、これらの監査ログを DB にも実行する必要があります。
高いレベルでやりたいことを達成するための解決策が何であるかを知りたいだけです。
コードのフォーマットが少しお粗末で申し訳ありません... (ほとんどが疑似コードです)。このコードのフォーマットを StackOverflow で動作させることができません。Github マークダウンの方がはるかに簡単です。
spring - 一致を試みる前にプロパティ「式」を設定する必要があります
このSOの質問を解決しようとしていたとき...
直面した
java - Spring webflow でフロースコープ Bean にアドバイスする方法
私のプロジェクトは Spring Web フロー 2.4 を使用しています。Spring AOP を使用してフロー スコープ Bean にアドバイスし、ロギングなどのアスペクト要件を処理する必要があります。アスペクトクラスは次のとおりです。
また、ルート WebApplicationContext で autoproxy を定義します。
そして個々の -flow.xml ファイル
Service Bean と Controller に簡単にアドバイスするために同じパターンを使用しましたが、フロースコープの Bean では機能せず、アスペクトは実行されませんでした。JDK動的インターフェースプロキシの何かかと思ったのですが、CGLIBでも失敗しました(proxy-target-class="true"属性が設定されていました)。ポイントカットは傍受されませんでした。そのため、フロースコープ Bean がインスタンス化されたときに適切にプロキシされていないのではないかと疑っていました。
LTW に切り替えようとしましたが、NoSuchMethodError がスローされました (Bean は weaveinfo ログから織り込まれました)。それだけのために別のスレッドを立てたほうがいいかもしれません。
私の質問は、Spring AOP を使用してフロー スコープ Bean とその方法をアドバイスすることは可能でしょうか?
intellij-idea - アスペクト定義のメソッドに関する IntelliJ IDEA "メソッドを解決できません"
私はspring-data-neo4j 3.4.2を使用しています。これは (オプションで) AspectJ を使用しています。
私の IDE は IntelliJ IDEA 16 (EAP、IU-144.3891.8) です。最新の IntelliJ IDEA 15 を使用して同じ問題が発生しました。
IntelliJ 内でこれまでのところすべて正常に動作し、コンパイル、単体テストの実行、Web アプリケーションのデプロイと実行を Wildfly などに実行できます。
IntelliJ でプロジェクトをビルドすると、必要な側面が使用されていることがわかります (次の警告は問題ありません)。
私の問題: IntelliJ IDEA は spring-aspects/ajc を正しく使用します。しかし、エディターでは、アスペクトは解決/使用されません。コード補完などが機能しません。
AspectJ-facet 構成では、aspect-path が推奨されるように構成されます。
プラグイン「AspectJ Support」と「Spring AOP/@AspectJ」がインストールされ、有効になっています。
エディターでスプリング (データ) アスペクトを使用したいのですが、IntelliJ エディターがアスペクトを認識する方法を教えてください。
spring-aop - Spring AOP が予期せず呼び出されている
例外をログに記録するために、アプリケーションの 2 つの異なるパッケージに対して Spring AOP を構成しました。各パッケージには 2 つの異なる構成があります。
サービス メソッド呼び出しでは、これらの各パッケージに属するクラスのメソッドへの呼び出しがあります。
public void メソッド() {
method1(); -> パッケージ abc
method2(); -> パッケージ xyz
}
method2 で例外が発生し、logExceptionXYZ メソッドを呼び出します。ここで、それを一般的な例外 (ExceptionXYZ など) でラップし、さらにスローします。
しかし、この後、logExceptionABC メソッドも呼び出され、ExceptionABC などの一般的な例外がスローされます。
logExceptionABC メソッドが呼び出される理由を理解できませんか?
このような問題に詳しい方教えてください!
よろしく、ラフル
java - Angular JS を使用した Spring Security でのログイン プロセス後に CSFR_TOKEN セッション属性が見つからない
CSRF を使用した AngularJS の Spring Security に問題があります。
私の実装は、次のドキュメントに基づいています。
http://spring.io/guides/tutorials/spring-security-and-angular-js/
私の問題は、ログイン/ログアウトプロセスが正しく管理されていないことです。
ログイン フェーズは順調に進んでいるようです。応答は OK で、Java セッションが作成され、ログに記録されたプリンシパルを含む属性 " SPRING_SECURITY_CONTEXT "があります。しかし、ログイン プロセスの後、セッション オブジェクトでCSFR_TOKEN の属性が欠落していることに気付きました。
これにより、次のような影響が生じます。ログアウトを試みると、Spring Security が必要とするすべてのヘッダーを含むリクエストを渡します。しかし、org.springframework.security.web.csrf.CsrfFilterクラスの「 doFilterInternal」メソッドは属性を取得できません。
これにより、「トークンが欠落している」(リクエストヘッダーではなくセッションオブジェクト内にある)ため、トークンが再生成されます。そのため、「doFilterInternal」がリクエストで渡されたトークンと一致するコントロールを作成すると、一致は失敗し、それが出力するSpringログ:「無効なCSRFトークンが見つかりました...」
この問題により、フィルタ チェーンが停止します。カスタム「csrfHeaderFilter」で作成されたフィルタは、標準フィルタの後に呼び出されるため呼び出されないため、次のエラー ページが返されます。
HTTP ステータス 403 - 期待される CSRF トークンが見つかりません。セッションの有効期限が切れていますか?
セッションの有効期限が切れていません。実際、ブラウザでページを更新すると、まだログインしていることがわかります。ログには、ユーザー名がまだ存在していることがわかり、セッションにはプリンシパル オブジェクトが完全に保存されています。
ページの更新後にログアウトを再試行すると、セッションに属性「CSRF_TOKEN」が存在するため、ログアウトは失敗しなくなります。その後、リクエストに空のセッションがあるため、ログアウトプロセスは完全に管理されます。
何が問題なのですか?
これが私の実際のセキュリティ構成です。
これらは、最初のログアウト試行時のリクエスト ヘッダーです (更新なし) 。
java - カスタム DaoAuthenticationProvider を Spring コンテキストにロードする方法は?
Spring Security でこの問題が発生しました。
WebSecurityConfigurerAdapter を拡張する SecurityConfig クラスを使用した java-config 実装があります。
このクラスでは、メソッド「configure()」をオーバーライドしたい
すべて問題なく動作します。
問題は、「MyDaoAuthenticationProvider」コンポーネントが Spring Context にロードされていないことです。したがって、このクラスのコンポーネントを注入または Autowired することはできません。
これは AuthenticationHandler クラスです。
MyDaoAuthenticationProvider クラスに @Component を配置し、SecurityConfig クラスに @Autowired アノテーションを追加すると、次のようになります。
このエラーで開始時にアプリケーションがクラッシュします。
この問題を解決するにはどうすればよいですか? ありがとう。
編集
解決
OrangeDog のおかげで、この実装の問題を修正しました。
この構成により、Bean は正しく初期化され、「java.lang.IllegalArgumentException: UserDetailsService を設定する必要があります」というエラーはなくなります。
さらに、Bean は Spring コンテキストにロードされるため、DaoAuthenticationProvider に挿入されたすべてのコンポーネントが正しく解決されます。