Spring Boot projelerinde methodları rol bazlı olarak ayırmak için Spring Security Framework'ünü kullanabilirsiniz.
Spring Security, güvenlikle ilgili birçok özellik sunar ve birkaç adımda projenize entegre edilebilir. Spring Security ile, kullanıcının rollerine göre erişim kontrolü yapabilirsiniz.
Öncelikle, Spring Security'yi projenize eklemelisiniz. Bunun için Maven ya da Gradle gibi proje yöneticilerinden birini kullanabilirsiniz. Örneğin, Maven için aşağıdaki bağımlılığı pom.xml dosyanıza ekleyebilirsiniz:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
Daha sonra, Spring Security yapılandırmasını yapmanız gerekiyor. Bu işlem için bir sınıf oluşturabilir ve @Configuration ve @EnableWebSecurity anotasyonlarını ekleyebilirsiniz. Ardından, configure() metodunu kullanarak güvenlik ayarlarınızı yapabilirsiniz. Bu metodun içinde, antMatchers() ve hasRole() metodlarını kullanarak, hangi rollerin hangi metodlara erişebileceğini belirtebilirsiniz.
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/user/**").hasRole("USER")
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.logout()
.logoutSuccessUrl("/login")
.invalidateHttpSession(true)
.deleteCookies("JSESSIONID");
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("admin").password("{noop}admin123").roles("ADMIN")
.and()
.withUser("user").password("{noop}user123").roles("USER");
}
}
Bu örnekte, antMatchers() metodunu kullanarak, "/admin/**" yoluna sahip tüm isteklerin sadece "ADMIN" rolüne sahip kullanıcılar tarafından erişilebileceğini belirttik. Benzer şekilde, "/user/**" yoluna sahip tüm isteklerin sadece "USER" rolüne sahip kullanıcılar tarafından erişilebileceğini belirttik.
Ayrıca, configureGlobal() metodunu kullanarak, kullanıcı adları ve rollerini de belirttik. Bu örnekte, iki kullanıcı ("admin" ve "user") oluşturduk ve her birine farklı roller atadık.
Bu şekilde, Spring Security ile methodları rol bazlı olarak ayırabilirsiniz.