sql >> データベース >  >> NoSQL >> MongoDB

Spring Security+Springデータ+MongoDBによる認証

    サービスレイヤー

    別のserviceを作成する必要があります org.springframework.security.core.userdetails.UserDetailsServiceの実装 AuthenticationManagerBuilder内に挿入します 。

    @Component
    public class SecUserDetailsService implements UserDetailsService{
    
        @Autowired
        private UserRepository userRepository;
    
        @Override
        public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
            /*Here add user data layer fetching from the MongoDB.
              I have used userRepository*/
            User user = userRepository.findByUsername(username);
            if(user == null){
                throw new UsernameNotFoundException(username);
            }else{
                UserDetails details = new SecUserDetails(user);
                return details;
            }
        }
    }
    

    モデル

    UserDetails また、実装する必要があります。これは、Springによってユーザーが認証された詳細を保持するPOJOです。私が行ったように、エンティティデータオブジェクトをその中にラップして含めることができます。

    public class SecUserDetails implements UserDetails {
    
        private User user;
    
        public SecUserDetails(User user) {
            this.user = user;
        }
        ......
        ......
        ......
    }
    

    セキュリティ構成

    以前に作成したサービスを自動配線し、AuthenticationManagerBuilder内に設定します

    @Configuration
    @EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
        @Autowired
        SecUserDetailsService userDetailsService ;
    
        @Autowired
        public void configAuthBuilder(AuthenticationManagerBuilder builder) throws Exception {
            builder.userDetailsService(userDetailsService); 
        }
    }
    


    1. MongoEngineは、クエリで読み取り設定を指定します

    2. MongoDB-PHPクエリのヘルプ

    3. MongoDB NodeJSネイティブドライバー(mongodb)とMongoシェルのパフォーマンス

    4. 'MongoMappingContext#setAutoIndexCreation(boolean)'を使用するか、' MongoConfigurationSupport#autoIndexCreation()'をオーバーライドして明示的にしてください