Create supporting controller code and view pages
- Add a hyperlink in home page and refer to /leaders
- Create a controller with
@GetMapping("/leaders")
and return to leaders.jsp - Create a page for leaders
- Repeat the job for different roles, nothing special
Update user roles
DemoSecurityConfig.java:1
2
3
4
5
6
7
8
9protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// add our users for in memory authentication
UserBuilder users = User.withDefaultPasswordEncoder();
auth.inMemoryAuthentication()
.withUser(users.username("john").password("test123").roles("EMPLOYEE"))
.withUser(users.username("mary").password("test123").roles("EMPLOYEE","MANAGER"))
.withUser(users.username("susan").password("test123").roles("EMPLOYEE","ADMIN"));
}
Restrict Access based on Roles
General syntax:1
.antMatchers(<< add path to match on >>).hasRole(<< authorized role >>)
or1
2// Any role in the list, comma-delimited list. E.g. "ADMIN","DEVELOPER","VIP","PLATINUM"
.antMatchers(<< add path to match on >>).hasAnyRole(<< authorized role >>)
DemoSecurityConfig.java:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/").hasRole("EMPLOYEE")
.antMatchers("/leaders/**").hasRole("MANAGER")
.antMatchers("/admins/**").hasRole("ADMIN")
.and()
.formLogin()
.loginPage("/showMyLoginPage")
.loginProcessingUrl("/authenticateTheUser")
.permitAll()
.and()
.logout()
.permitAll();
}
In this way, if a user tries to access in a page which he is not authorized to, he will be denied by “HTTP Status 403 - Forbidden”.