2

私のアプリケーションは、Spring 3、Hibernate 3、MySQL に基づいています。Spring Security のドキュメントを読み、以下のように認証を実装できることを知りました。

<authentication-manager>
   <authentication-provider>
    <jdbc-user-service data-source-ref="dataSource"

       users-by-username-query="
          select username,password, enabled 
          from users where username=?" 

       authorities-by-username-query="
          select u.username, ur.authority from users u, user_roles ur 
          where u.user_id = ur.user_id and u.username =?  " 

    />
   </authentication-provider>
</authentication-manager>

上記の部分は理解しましたが、私の懸念は、アプリケーションの user テーブルに userName、password、および enabled フィールドだけが格納されていないことです。また、姓名、emailID、電話なども保存します。認証が成功したら、次のjspですべてのユーザーの詳細を自動的に入力し、登録されていないユーザーに尋ねるのと同じ情報をユーザーに尋ねないようにします。

  1. xml ベースではなく、注釈ベースの構成を使用したい (Spring 2.5 の例で言及されているものとは異なります)
  2. 春のドキュメントは、セキュリティのために休止状態を使用しません。hibernate または jdbc-user-service を使用する必要がありますか? 休止状態の場合、どのように?
  3. カスタマイズされた UserService を使用する例をいくつか見ました。それは私もする必要がありますか?

誰かが良い例で親切にアドバイスできますか? 他の投稿への参照も役立ちます。

4

1 に答える 1

1

現在、Spring Security はほとんどアノテーションなしで構成されていますが、Spring Security を簡単にカスタマイズするために特別な XML 名前空間を使用できます。

UserDetailsService永続ストアからユーザーの詳細をロードする責任を負う独自のものを実装する必要があります。

UserDetailsServiceインターフェイスにはメソッドが 1 つだけあります

UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;

コンポーネントの Bean を実装して作成したら、それを注入する必要があります。

<authentication-manager>
   <authentication-provider user-service-ref="myUserDetailsService"/>
</authentication-manager>

Spring Security Docs の詳細:

http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#tech-userdetailsservice

http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#nsa-authentication-provider

データベースのような情報がない場合はenabled、常にそのフィールドのオブジェクトにtrue値を入力する必要があります。UserDetails

于 2012-11-06T16:21:41.733 に答える