- Define Security Configuration Class:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// Configure security settings here
}
}
- Configure URL Access:
http.authorizeRequests()
.antMatchers("/public/").permitAll()
.antMatchers("/admin/").hasRole("ADMIN")
.anyRequest().authenticated();
- Configure Login Form:
http.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/dashboard")
.permitAll();
- Configure Logout:
http.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/login?logout")
.permitAll();
- Configure Authentication:
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user").password(passwordEncoder().encode("password")).roles("USER")
.and()
.withUser("admin").password(passwordEncoder().encode("adminPassword")).roles("ADMIN");
}
- Configure Password Encoder Bean:
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}