• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Spring Security JDBC

0 głosów
49 wizyt
pytanie zadane 29 maja w Java przez JuniorPL Początkujący (390 p.)

Cześć, zanlazłem fragment kodu odpowiedzialny za logowanie. Wszystko działa poprawnie ale nie mogę zrozumieć do końca jak to działa. Nie rozumiem na jakiej podstawie wiadomo jak wygląda schemat bazy danych ponieważ nigdzie w kodzie się do tego nie odnosimy.

Tutaj tworzę bean potrzebny do autoryzacji.

public class AppConfig implements WebMvcConfigurer {
 
	@Autowired
	private Environment env;
	
	@Bean
	public DataSource securityDataSource()
	{
				
		ComboPooledDataSource securityDataSource = new ComboPooledDataSource();
					
		try
		{
			securityDataSource.setDriverClass(env.getProperty("jdbc.driver"));
		}
		catch (PropertyVetoException exc)
		{
			throw new RuntimeException(exc);
		}
		
		
		securityDataSource.setJdbcUrl(env.getProperty("jdbc.url"));
		securityDataSource.setUser(env.getProperty("jdbc.user"));
		securityDataSource.setPassword(env.getProperty("jdbc.password"));
		

		securityDataSource.setInitialPoolSize(
				getIntProperty("connection.pool.initialPoolSize"));
 
		securityDataSource.setMinPoolSize(
				getIntProperty("connection.pool.minPoolSize"));
 
		securityDataSource.setMaxPoolSize(
				getIntProperty("connection.pool.maxPoolSize"));
 
		securityDataSource.setMaxIdleTime(
				getIntProperty("connection.pool.maxIdleTime"));
		
		return securityDataSource;
	}
	
private int getIntProperty(String propName) {
		
		String propVal = env.getProperty(propName);
		
	
		int intPropVal = Integer.parseInt(propVal);
		
		return intPropVal;
	}
}

A tu fragment odpowiadający za autoryzację.

@Override
	protected void configure(AuthenticationManagerBuilder auth) throws Exception
 {
 
		auth.jdbcAuthentication().dataSource(securityDataSource);
		
	}

Ten przykład jest popularny ale nie mogę zrozumieć na jakiej podstawie z kod wie jak wygląda baza danych i gdzie dokonuje odpytania odpowiednich tabel. Może ktoś coś podpowie.

1 odpowiedź

+1 głos
odpowiedź 30 maja przez mbabane Maniak (70,020 p.)
wybrane 30 maja przez JuniorPL
 
Najlepsza

Domyślnie Security w najnowszych wersjach oczekuje takich tabel:

https://docs.spring.io/spring-security/site/docs/5.2.0.BUILD-SNAPSHOT/reference/htmlsingle/#appendix-schema

więc jeśli w bazie sam przez przypadek dałeś odpowiednie nazwy to Spring sobie poradził. Być może należy też szukać odpowiedzi w implementacji ComboPooledDataSource. Może tam są tworzone odpowiednie tabele.

Więcej info tutaj:
https://docs.spring.io/spring-security/site/docs/5.2.0.BUILD-SNAPSHOT/reference/htmlsingle/#overall-architecture

 

W książce Spring w Akcji IV, jest podane, że pod spodem domyślnie wykonywane są takie zapytania:

 public static final String DEF_USERS_BY_USERNAME_QUERY =
                    "select username,password,enabled " +
                    "from users " +
                    "where username = ?";
public static final String DEF_AUTHORITIES_BY_USERNAME_QUERY =
                    "select username,authority " +
                    "from authorities " +
                    "where username = ?";
public static final String DEF_GROUP_AUTHORITIES_BY_USERNAME_QUERY =
                    "select g.id, g.group_name, ga.authority " + 
                    "from groups g, group_members gm, group_authorities ga " +
                    "where gm.username = ? " +
                    "and g.id = ga.group_id " +

 

komentarz 30 maja przez JuniorPL Początkujący (390 p.)
Wielkie dzięki naprawdę mi rozjaśmiłeś temat. Mam tą książkę ale jeszcze tam nie dotarłem chciałbym pędzić do przodu a czasem potykam się o własne nogi.

Podobne pytania

0 głosów
0 odpowiedzi 86 wizyt
0 głosów
3 odpowiedzi 137 wizyt
0 głosów
1 odpowiedź 726 wizyt
pytanie zadane 14 marca 2018 w Java przez Tomek Reda Obywatel (1,110 p.)
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

65,811 zapytań

112,468 odpowiedzi

237,631 komentarzy

46,737 pasjonatów

Przeglądających: 271
Pasjonatów: 20 Gości: 251

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...