私の春のMVCアプリケーションで私はPrincipal
私のサービス層で春のセキュリティによって作成されたオブジェクトにアクセスしたいです。私はサービスクラスにそれを注入することを考えましたが、スレッドセーフではないと確信しています。 他のオプション私は考えている、引数としてすべてのサービスメソッドに渡すことですが、これは私には非常にきれいに見えません。 これを行うにはどうすればよいでしょうか?サービスメソッドのプリンシパルユーザーオブジェクトを取得
7
A
答えて
10
SecurityContextHolder
を使用することをお勧めします。
Principal principal = SecurityContextHolder.getContext().getAuthentication();
春はそれがdocumentationでどのように機能するかについて説明します。
最も基本的なオブジェクトがSecurityContextHolderです。これは、現在 アプリケーションを使用しているプリンシパルの詳細を含む アプリケーションの現在のセキュリティコンテキストの詳細、 を格納しています。既定では、SecurityContextHolderはThreadLocal を使用してこれらの詳細を格納します。つまり、セキュリティコンテキストが の引数として明示的に渡されなくても、セキュリティコンテキストが の同じ実行スレッド内のメソッドで常に使用可能であることを意味します。 。現在のプリンシパルの要求が処理された後に が処理された場合には、この方法でThreadLocalを使用することはかなり安全です。 が処理されました。もちろん、Spring Securityは自動的に のためにこれを処理しますので、心配する必要はありません。
ThreadLocal
を使用して現在の認証を保存するため、スレッドの安全性の問題は発生しません。
関連する問題
- 1. WCFサービスメソッドへのリクエストを取得できません
- 2. SharePointのLists.GetListItems Webサービスメソッドを使用して特定のドキュメントバージョンを取得する
- 3. Webサービスメソッドが例外をスローするときのエラーメッセージの取得方法。
- 4. Angular2サービスメソッドのテスト
- 5. Springサービスメソッドのバリデーション
- 6. のInvoke Webサービスメソッド
- 7. PUTサービスメソッドの例?
- 8. WCFサービスメソッドの引数
- 9. WCFサービスメソッドの参照
- 10. C#SOAPサービスメソッドは、
- 11. マースカスタムWebサービスメソッド
- 12. 動的Ionic2サービスメソッド
- 13. Python:リフレクションを使用してWebサービスメソッドを取る
- 14. セットアップ嘲笑EFサービスメソッド
- 15. C#クライアントからヌル引数を受け取るJava Webサービスメソッド
- 16. Webサービスメソッドのキャッシュ戻り値
- 17. SOAPサービスメソッドのクラス定義C#
- 18. WCFサービスメソッドの引数、ブール
- 19. テスト専用のJavaサービスメソッド
- 20. カルマジャスミンでangular2ユニットテストを使用して、サービスメソッド呼び出しからテストケースにjsonデータを取得する方法は?
- 21. Java:RESTサービスメソッドの実行をキャンセルします。
- 22. テスト時間依存サービスメソッド
- 23. 春3 JPA:LazyInitializationException @Transactionalサービスメソッドが
- 24. 配列パラメータを持つCXF Webサービスメソッド
- 25. ジェネリックハンドラからWebサービスメソッドを呼び出す
- 26. Webサービスメソッド間でpublicプロパティを使用
- 27. Failのサービスメソッドから返されるタイプ
- 28. REST Webサービスメソッドのデータ型制限
- 29. アクティビティによるサービスメソッドへのアクセス
- 30. はJavaScriptからC#のWebサービスメソッド