sql >> Databáze >  >> NoSQL >> MongoDB

Autentizace pomocí Spring Security + Spring data + MongoDB

Vrstva služeb

Musíte vytvořit samostatnou service implementace org.springframework.security.core.userdetails.UserDetailsService a vložte jej do 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;
        }
    }
}

Model

UserDetails Mělo by být také implementováno. Toto je POJO, které do jara uchová údaje ověřené uživatelem. Můžete do něj zabalit svůj datový objekt Entity, jak jsem to udělal já.

public class SecUserDetails implements UserDetails {

    private User user;

    public SecUserDetails(User user) {
        this.user = user;
    }
    ......
    ......
    ......
}

Konfigurace zabezpečení

Automaticky propojte službu, kterou jsme vytvořili dříve, a nastavte ji v AuthenticationManagerBuilder

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    SecUserDetailsService userDetailsService ;

    @Autowired
    public void configAuthBuilder(AuthenticationManagerBuilder builder) throws Exception {
        builder.userDetailsService(userDetailsService); 
    }
}


  1. Nelze se připojit k MongoDb (pomocí ověřování) pomocí mongocsharpdriver 2.7.0

  2. MongoDB prázdné znaky

  3. import mongoose schématu do jiného souboru schématu způsobí, že importované schéma nebude definováno

  4. Šifrování databáze MongoDB