Bonjour,
J'ai fait l'autorisation d'accéder à des ressources pour chaque utilisateurs de la BD avec spring security:
Par la suite, j'ai spécifié les views pour chaque URL:
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
39
40
41 @Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter{ @Autowired protected void globalConfig(AuthenticationManagerBuilder auth, DataSource dataSource) throws Exception { //auth.inMemoryAuthentication().withUser("user").password("123").roles("USER"); auth.jdbcAuthentication() .dataSource(dataSource) .usersByUsernameQuery("select username as principal, password as credentials, etat as actived from utilisateurs where username=?") .authoritiesByUsernameQuery("select u.username as principal, ur.nom_role as role from utilisateurs u inner join roles ur on(u.roles_id=ur.id_role) where u.username=?") .rolePrefix("ROLE_"); } protected void configure(HttpSecurity http) throws Exception { http .csrf().disable() .sessionManagement().maximumSessions(100).maxSessionsPreventsLogin(false).expiredUrl("/Login"); http .authorizeRequests() .antMatchers("/AppJS/**","/images/**","/pdf/**","/Template/**","/Views/**","/MainApp.js").permitAll() .antMatchers("/Users/**").access("hasRole('ADMIN')") .antMatchers("/Dashbord/**").access("hasRole('ADMIN')") .antMatchers("/Login*").anonymous() .anyRequest().authenticated() .and() .formLogin().loginPage("/Login").permitAll() .defaultSuccessUrl("/home") .failureUrl("/Login?error=true") .and().exceptionHandling().accessDeniedPage("/Access_Denied") .and() .logout() .invalidateHttpSession(true) .clearAuthentication(true) .logoutUrl("/logout") .permitAll() .logoutSuccessUrl("/Login"); } }
J'ai utilisé le AngularJS routeProvider pour garder la trace des URL:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 @Configuration public class MvcConfig extends WebMvcConfigurerAdapter{ @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/Login").setViewName("Login"); registry.addViewController("/Dashbord").setViewName("home"); registry.addViewController("/logout").setViewName("Login"); registry.addViewController("/Users").setViewName("Views/ListUsers"); } }
Mon problème est comment faire le lien de l'autorisation des accès à des ressources que je défini dans le back-office (spring security) avec les URL de AngularJS($routeProvider):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 var app = angular.module('Mainapp', ['ngRoute','file-model','ui.bootstrap','ngMessages']); app.config(function($routeProvider) { $routeProvider .when('/Users', { controller:'UsersController', templateUrl: 'Views/ListUsers' }) .when('/Dashbord', { controller: 'ResultController', templateUrl: 'Views/home.html' }); });
J'ai pas trouvé la bonne solution pour faire fonctionner le probléme.
Merci de m'aider mes amis.
Partager