Authentifizierung mit Spring Security + Spring data + MongoDB
Will ich mit Spring security mit MongoDB (mit Spring data) und rufen Sie die Benutzer aus meiner eigenen Datenbank für spring security. Jedoch kann ich nicht tun, da meine userservice Typ scheint nicht unterstützt zu werden.
Dies ist meine Klasse UserService:
public class UserService {
private ApplicationContext applicationContext;
private MongoOperations mongoOperations;
public UserService() {
applicationContext = new AnnotationConfigApplicationContext(MongoConfig.class);
mongoOperations = (MongoOperations) applicationContext.getBean("mongoTemplate");
}
public User find(String username) {
return mongoOperations.findOne(Query.query(Criteria.where("username").is(username)), User.class);
}
}
Und meine SecurityConfig Klasse:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
UserService userService;
@Autowired
public void configAuthBuilder(AuthenticationManagerBuilder builder) throws Exception {
builder.userDetailsService(userService); //THIS DOES NOT WORK
builder.inMemoryAuthentication().withUser("username").password("password").roles("USER");
}
}
Die Zeile habe ich kommentiert, sagt:
The inferred type UserService is not a valid substitute for the bounded parameter <T extends UserDetailsService>.
Wie kann ich es beheben, damit ich abrufen kann der Nutzer aus meiner eigenen Datenbank?
InformationsquelleAutor der Frage Moody | 2015-04-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Service Layer
Erstellen Sie eine separate
service
Umsetzungorg.springframework.security.core.userdetails.UserDetailsService
und injizieren es in denAuthenticationManagerBuilder
.Modell
UserDetails
Sollte auch umgesetzt werden. Dies ist die POJO, mit dem der Benutzer authentifiziert Daten durch den Frühling. Sie können Ihre Entity-Datenobjekt verpackt im inneren, wie ich getan habe.Security Config
Autowire der service, den wir zuvor erstellt haben, und legen Sie es in den
AuthenticationManagerBuilder
InformationsquelleAutor der Antwort Faraj Farook
Erstellen Sie Ihre eigenen Authentifizierungs-provider Bereitstellung einer Klasse, die Sie erweitert die UserDetailservice.
Sicherzustellen content scanning aktivieren Sie im spring-Kontext-xml-Datei.
}
Dieser Klasse wird es ermöglichen, spring-Abfrage mongo für den Benutzernamen und das Kennwort für die Authentifizierung erforderlich. Als Nächstes erstellen Sie das user-model-Klasse.
Erstellen der Benutzer Umsetzung Klasse, die Sie erweitert die DAO.
Schließlich konfigurieren mongo und du bist fertig.
InformationsquelleAutor der Antwort obi