2012-02-20 12 views
0

私はSpringの新人であり、Javaの高度なプログラマーではありません。Spring Security 3.1でフォームベース認証を使用していて、UserDetailsオブジェクトに追加の属性を追加したい場合

私はスプリングセキュリティを使用しているプロトタイプを作成しています。 私はJSPフォームベースのユーザ認証を使用すると、アイデアは、後に、この認証方法は、OpenID認証に置き換えられるということである私の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> 

でいくつかのダミーのユーザーを持っていますそれをシンプルに保つために。

私が必要としているのは、認証されたユーザー名を使用してユーザーが認証されたときです。私はデータベースのテーブルからユーザーの追加の詳細を取得し、Spring UserDetailsオブジェクトに入れたいので、常に利用できます。

私はこれまで研究してきたもの

は私がカスタムUserDetailsS​​erviceを作成する必要がありますかスプリングの標準的な認証方法を使用していた場合、私は私のカスタムUserDetailsS​​ervice

私の質問は作成する必要があるということですか? 私はちょうどデータベースからそれを読むいくつかの追加の詳細を保存したい。

私は多くの例を見てきましたが、どれもこの特定の問題に答えません。 私はこれらの技術に少し新しくなっています。私はコードスニペットをどのように結びつけるのか分からなくなってしまいます。正しい方向に私を指すように任意のヘルプは

おかげ

答えて

1

はい素晴らしいことです。一般に、追加のプロパティを使用して拡張UserDetailsオブジェクトを返すカスタムUserDetailsServiceが必要です。たとえば、this oneのように、SOを検索すると、多くのサンプル構成が見つかります。

は、厳密に言えば、あなたは(あなたが直接AuthenticationProviderを実装することができます)UserDetailsServiceを使用するか、UserDetailsを実装する必要はありませんが、それはあなたが開始する必要がどこで、おそらくあるのに最も簡単な方法です。

+0

素晴らしい、それは私が探していたものです。私のような初心者のための非常に単純でストレートな例です。 認証プロセスをOpenIDに変更するともう1つのことを教えてください。このカスタム実装はなくなります。私はまだuserDetailsにいくつかの余分な属性を保存したいと思います。つまり、私はGmailなどのOpenIDサービスから認証されるのが好きです。認証が成功した場合、電子メールに基づいて、私は自分のデータベース内のローカルサーバを実行し、userdetails objにいくつかの余分な属性をロードします。それは可能ですか?またはこれを達成するための他の提案がありますか? – Mrinmoy

+0

非常に似ています。 Spring SecurityコードベースのOpenIDサンプルコードを見てください。これは、OpenIDプロバイダから引き出された属性を持つカスタムの 'UserDetails'オブジェクトを使用します。いくつかのローカルJDBCコードを追加するのは簡単です。 –

関連する問題