私の春の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. のInvoke Webサービスメソッド
- 5. PUTサービスメソッドの例?
- 6. WCFサービスメソッドの引数
- 7. WCFサービスメソッドの参照
- 8. C#クライアントからヌル引数を受け取るJava Webサービスメソッド
- 9. WCFサービスメソッドの引数、ブール
- 10. SOAPサービスメソッドのクラス定義C#
- 11. テスト時間依存サービスメソッド
- 12. 春3 JPA:LazyInitializationException @Transactionalサービスメソッドが
- 13. 配列パラメータを持つCXF Webサービスメソッド
- 14. ジェネリックハンドラからWebサービスメソッドを呼び出す
- 15. アクティビティによるサービスメソッドへのアクセス
- 16. REST Webサービスメソッドのデータ型制限
- 17. はJavaScriptからC#のWebサービスメソッド
- 18. Failのサービスメソッドから返されるタイプ
- 19. Webサービスメソッドにモデルバインディングがありますか?
- 20. 春とmongodbを使用したサービスメソッドへのロールベースのアクセス
- 21. WCFサービスメソッド複数のパラメータを持つリポジトリへの実装
- 22. シルバー:代わりに、ジェネリックリストののObservableCollectionを返すWebサービスメソッド
- 23. リクエスト/レスポンス用のJsonを使用したWCFサービスメソッドの使用
- 24. RIAサービスメソッドのシグネチャで、ビットマップをパラメータとして渡しますか?
- 25. ASP.NET Webサービスメソッドの終了を処理する
- 26. ブラウザでPDFファイルを表示するためのREST Webサービスメソッド
- 27. 取得日画像の取得
- 28. 同じサービスの実行サービスメソッドのためのSpringトランザクション管理
- 29. プロキシを持たずにWCFサービスメソッドを呼び出す
- 30. つのエンドポイント(石鹸、JSON)と1つのサービスメソッド