Ich versuche, Datenbank zu Spring OAuth Server-Beispielcode hinzuzufügen. Hier ist die Konfiguration der dataSource.Spring OAuth Server JBDCTokenStore Fehler
@Bean(name = "dataSource")
public DriverManagerDataSource dataSource() {
DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
driverManagerDataSource.setDriverClassName("org.mariadb.jdbc.Driver");
driverManagerDataSource.setUrl("jdbc:mariadb://localhost:3306/OAuth");
driverManagerDataSource.setUsername("root");
driverManagerDataSource.setPassword("password");
return driverManagerDataSource;
}
Und EndpointConfig
@Autowired
private DataSource dataSource;
@Bean
public JdbcClientDetailsService clientDetailsService() {
return new JdbcClientDetailsService(dataSource);
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.withClientDetails(clientDetailsService());
}
@Bean
public TokenStore tokenStore() {
//return new InMemoryTokenStore();
return new JdbcTokenStore(dataSource);
}
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.tokenStore(tokenStore);
endpoints.userApprovalHandler(userApprovalHandler);
endpoints.authenticationManager(authenticationManager);
}
Aber ich bekomme Fehler auf JbdctokenStore, JdbcClientDetailsService funktionieren.
Fehlermeldung:
Verursacht durch: java.lang.IllegalArgumentException: Datasource
erforderlichVerursacht durch: org.springframework.beans.factory.BeanCreationException: Fehler Bean mit dem Namen zu schaffen 'tokenStore' im Klassenpfad definiert Ressource [org/springframework/Sicherheit/oauth/Beispiele/Sparklr/config/OAuth2ServerConfig $ AuthorizationServerConfiguration.class]: Instanziierung von Bean fehlgeschlagen; verschachtelte Ausnahme ist org.springframework.beans.factory.BeanDefinitionStoreException: Fabrik Methode [public org.springframework.security.oauth2.provider.token.TokenStore org.springframework.security.oauth.examples.sparklr.config.OAuth2ServerConfig $ AuthorizationServerConfiguration.tokenStore()] hat Ausnahme ausgelöst; verschachtelte Ausnahme ist java.lang.IllegalArgumentException: Datasource erforderlich
Ich konnte nicht herausfinden, was passiert. Datenbank und Tabelle ist alles in Ordnung. (Ich benutze die SQL-Datei der Probe ergab.)
@Bean
public TokenStore tokenStore() {
//return new InMemoryTokenStore();
return new JdbcTokenStore(dataSource());
}
@Bean
public DriverManagerDataSource dataSource() {
DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
driverManagerDataSource.setDriverClassName("org.mariadb.jdbc.Driver");
driverManagerDataSource.setUrl("jdbc:mariadb://localhost:3306/OAuth");
driverManagerDataSource.setUsername("root");
driverManagerDataSource.setPassword("a89019");
return driverManagerDataSource;
}
ich nur hinzufügen, eine neue Bean unter ihm und Änderung Datasource Datasource(), und es funktioniert. Ich kann nicht verstehen, warum JdbcClientDetailsService mit orignal arbeitet. JdbcTokenStore benötigt jedoch einen neuen. Wie kann ich diesen Teil des Codes ändern, sieht der Code chaotisch wegen doppelten Code.
Haben Sie '@ Configuration' Annotation auf' JdbcTokenStore' Klasse? – harshavmb
Nein, aber ich löse den Fehler, indem ich den doppelten Code darunter hinzufüge. Ich weiß nicht, warum es funktioniert. –