Spring Security 3.1ではフォームベースの認証を使用しており、UserDetailsオブジェクトに追加の属性を配置したいと考えています
-
28-10-2019 - |
質問
私は Springs の初心者であり、Java の上級プログラマーではありません。
Springsセキュリティを使用するプロトタイプを作成しています。シンプルにするために、私はJSPフォームベースのユーザー認証を使用しており、applicationContext-security.xmlにダミーユーザーをいくつか入れています。
<security:http auto-config='true'>
<security:intercept-url pattern="/**" access="ROLE_USER" />
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="foo" password="foo" authorities="ROLE_USER, ROLE_ADMIN" />
<security:user name="bob" password="bob" authorities="ROLE_USER" />
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
将来的には、この認証方法が OpenId 認証に置き換えられるという考えです。
ここで必要なのは、ユーザーが認証されたら、認証されたユーザー名を使用してデータベーステーブルからユーザーの追加の詳細を取得し、それをSprings UserDetailsオブジェクトに入れて、いつでも利用できるようにすることです
私がこれまでに調べたことは、カスタム UserDetailsService を作成する必要があるということです
私の質問は、スプリングの標準認証方法を使用している場合、カスタムの UserDetailsService を作成する必要があるかということです。データベースから読み取った追加の詳細を保存したいだけです。
私は多くの例を検討しましたが、この特定の問題に答えられるものはありませんでした。また、私はこれらのテクノロジーにあまり慣れていないので。コードスニペットをどのように結び付ければよいのか分かりません。私を正しい方向に導いてくれると助かります
ありがとう
解決
はい。通常、カスタムが必要です UserDetailsService
拡張されたものを返します UserDetails
必要な追加プロパティを含むオブジェクト。SO を検索すると、次のような設定例がたくさん見つかります。 これです, 、 例えば。
厳密に言えば、使用する必要はありません。 UserDetailsService
または実装する UserDetails
(実装できます AuthenticationProvider
直接)、しかしそれは一緒にいるための最も簡単なアプローチであり、おそらくどこから始めるべきでしょう。