1

私はSpring Securityを使用しており、データベースベースの認証には次の構成を使用し、正常に動作しています

<authentication-manager alias="authenticationManager">
  <authentication-provider>
     <jdbc-user-service data-source-ref="dataSource"
      users-by-username-query="SELECT ...... U.email_address=?"
      authorities-by-username-query="SELECT ... U.email_address=?">
  </authentication-provider>
</authentication-manager>

今、私はセッションに追加情報を追加したいと思っていましたが、セッションへのユーザーの追加、スプリングセキュリティのデフォルトログインに遭遇しました。試してみましたが、問題が発生しました。

XML には、user-service-ref と jdbc-user-service を組み合わせて使用​​できないと書かれています。ユーザーを認証するためだけに user-service-ref タグを使用する必要がある場合、それを整理する方法や他に私がしなければならないことはありますか? セッションにユーザーオブジェクト全体などの追加情報を追加する他の方法は何ですか?

あなたの助けに感謝します。

4

1 に答える 1

1

何時間もの検索と実験の後、私はこのようにすることができました.

  1. org.springframework.security.core.userdetails.UserDetailsServiceAnnotation を実装し、持つMyUserService という新しいサービスを作成し@Serviceます。UserDetailsS​​ervice には 1 つのメソッドしかありませんloadUserByUserName。このメソッドの実装は MyUserService にあります。このようになります。

    @Service public class MyUserService は UserDetailsS​​ervice を実装します {

    @Override
    public UserDetails loadUserByUsername(String arg0)
            throws UsernameNotFoundException {
    
        MyUser user=new MyUser();
        /*get details of user and authorities from database whose username is   
                arg0 and place them in user instance */
        return user;
    }
    
    }
    
  2. MyUser も実装する新しいクラスでorg.springframework.security.core.userdetails.UserDetailsあり、そのすべてのメソッドは MyUser クラス内に実装されています。このようになります。

    public class MyUser implements UserDetails {
        private static final long serialVersionUID = 1L;
    /*All the variables their getter setters that you wish to store in session. And    
       implementation of all the methods of UserDetails go here.*/
    
     }
    
  3. このようなBeanを定義します <bean id="customUserDetailsService" class="org.aurora.timeexpense.service.MyUserService"/>

org.aurora.timeexpense.service.MyUserServiceUserDetailsS​​ervice を実装する定義済みサービスのパスはどこにありますか。

4.Spring Security 構成は次のようになります <authentication-manager alias="authenticationManager"> <authentication-provider user-service-ref="customUserDetailsService"> </authentication-provider> </authentication-manager>

準備できた。

于 2012-11-21T11:44:06.683 に答える