Bonjour à tous ,
j'ai un peu de mal à comprendre le fonctionnement de Spring pour le moment donc j'espère que vous pourrez continuez à m'aider dans mon apprentissage.
Dans un autre post sur ce forum, on m'a indiquer comment mettre en place une authentification avec Spring Security et Spring Boot.
Il y a quelque mois j'avais un projet sans Spring Boot donc j'avais un peu compris le fonctionnement des Beans et la configuration XML. Cependant, ça date un peu et en plus de ça j'utilise Spring Boot donc je suis un peu perdu.
J'ai les deux classes suivantes :
ET
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 @SpringBootApplication public class BusinessBootApplication { public static void main(String[] args) { SpringApplication.run(BusinessBootApplication.class, args); } @Configuration @Order(SecurityProperties.ACCESS_OVERRIDE_ORDER) protected static class SecurityConfiguration extends WebSecurityConfigurerAdapter{ @Override protected void configure(HttpSecurity http) throws Exception { UserDetailsServiceImpl userDetailsServiceImpl = new UserDetailsServiceImpl(); http .httpBasic() .and() .authorizeRequests() .antMatchers("/index.html","/home.html","/login.html","/").permitAll() .anyRequest() .authenticated() .and() .addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class) .csrf() .csrfTokenRepository(csrfTokenRepository()) .and() .userDetailsService(userDetailsServiceImpl); } private CsrfTokenRepository csrfTokenRepository() { HttpSessionCsrfTokenRepository repo = new HttpSessionCsrfTokenRepository(); repo.setHeaderName("X-XSRF-TOKEN"); return repo; } } }
Mon problème est que quand j'execute en debug mon application, je peux m'apercevoir que mon UserDao qui est censé être autowired, est NULL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 @Service public class UserDetailsServiceImpl implements UserDetailsService { @Autowired public UserDao userDao; @Override public UserDetails loadUserByUsername(String arg0) throws UsernameNotFoundException { UserDetailsImpl userDetailsImpl = null; User user = userDao.findByLogin(arg0); // ICI, userDao est null if(user == null){ throw new UsernameNotFoundException("Login not found"); } else{ userDetailsImpl = new UserDetailsImpl(user); } return userDetailsImpl; } }
J'ai cru comprendre en parcourant le net que c'était parce que j'instanciais ma classe directement. Du coup, ce n'est pas considéré comme un Bean.
Mais je n'ai pas compris comment résoudre ce problème. Avez-vous une idée, une piste ? Merci d'avance
Partager