sql >> Database >  >> NoSQL >> MongoDB

Authenticatie met Spring Security + Spring data + MongoDB

Servicelaag

U moet een aparte service maken implementeren van org.springframework.security.core.userdetails.UserDetailsService en injecteer het in de 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 Moet ook worden uitgevoerd. Dit is de POJO die de gebruiker geauthenticeerde details tegen de lente zal houden. U kunt uw Entiteitsgegevensobject erin opnemen, zoals ik heb gedaan.

public class SecUserDetails implements UserDetails {

    private User user;

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

Beveiligingsconfiguratie

Autowire de service die we eerder hebben gemaakt en plaats deze in de AuthenticationManagerBuilder

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

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


  1. waarom DuplicateKeyError:E11000 dubbele sleutel fout index:test.test.$notification_1 dup sleutel:{:null}

  2. MongoDB - Retour-ID van ingevoegd item

  3. Hoe een overeenkomstvoorwaarde voor matrixwaarden te schrijven?

  4. Hoe gegevens uit de bestaande MongoDB-database te halen?