2017-08-21 14 views
1

私はMongoDBを持つユーザー文書内のユーザー/パスワードの組み合わせを格納春のブートアプリケーションを作成しようとしています。私はMongoRepositoryを拡張するリポジトリを正常にセットアップすることができ、すべて正常に動作します。今、リポジトリが接続しているデータソースに基づいて認証を設定したいと思います。既定の接続を使用するだけで簡単にこれを行う方法はありますか、これを行うにはデータソースを具体的に定義する必要がありますか?春ブート構成+ RepositoryRestResource +認証

@Autowired 
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
    auth.jdbcAuthentication().dataSource(dataSource); 
} 

は、ここでは、データソースが定義されていると仮定しなければならないが、私はすでに設定RESTリポジトリを持っている場合、私はまだことはありません。ここに中間ステップが必要ですか?

答えて

0

私はこのケースでUserDetailsServiceインターフェースはあなたの親友になると思い

あなたはUserDetailsServiceインターフェイスを実装して、モンゴDBリポジトリは、作成UserDetailsService実装に注入されていることを確認する必要があります。その後のはorg.springframework.security.core.userdetails.Userオブジェクトを返し、モンゴDBのユーザー情報とそれを埋めるためにloadUserByUsernameメソッドを実装してみましょう。

import org.springframework.security.core.userdetails.User; 
@Service 
public class MyUserService implements UserDetailsService { 

    @Autowired 
    MyMongoRepo myMongoRepo; 

    @Override 
    public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException { 
     List<SimpleGrantedAuthority> dummyAuthorityForExample = Arrays.asList(new SimpleGrantedAuthority("ROLE_ADMIN")); 
     MyMongoUser mongoUser= myMongoRepo.findByUsername(s); 
     User user = new User(mongoUser.getUsername(), mongoUser.getPassword(),dummyAuthorityForExample); 
     return user; 
    } 
} 

そして最後に、だから私は実際に私のAuthenticationManagerBuilderにuserDetailsS​​erviceなくjdbcAuthenticationを設定する必要があなたのAuthenticationManagerBuilder

@Autowired 
UserDetailsService userDetailsService; 

@Autowired 
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
    auth.userDetailsService(userDetailsService); 
} 
+0

UserDetailsServiceを注入? –

+0

JDBC認証は、SQL querysを使用してGERのユーザデータにしようとしますbecausはい、それはですが、モンゴデータベースは、ドキュメントベースと –

+0

のNoSQLである実際には、これはJdbcUserDetailsManager thasのソースコードを見て証明することができUserDetailServiceは、JDBC認証のために実装され、あなたが見ることができるですどのようにquerysがSQLとしてのみ作成される –

関連する問題