search
Giriş
Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın Türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi
0 oy
340 gösterim
Projede bazı methodlara herkesin erişmesini istemiyorum. Bu yüzden rol tanımı yaptım. Bu rollere göre methoda erişimi nasıl yapabilirim?
Java kategorisinde 215 puan

1 cevap

0 oy

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.

6.2k puan

İlgili sorular

0 oy
1 cevap 172 gösterim
172 gösterim 9 Şubat 2021 Java kategorisinde Hilalcli 215 puan sordu
0 oy
1 cevap 302 gösterim
302 gösterim
Merhaba, İki ayrı spring boot projem var, ikisi de h2 db kullanıyor. İkisini aynı anda kaldırmaya çalışınca hata alıyorum, nasıl düzeltebilirim? Teşekkürler
13 Aralık 2021 Java kategorisinde Hilalcli 215 puan sordu
0 oy
1 cevap 312 gösterim
312 gösterim
Spring boot kullandığım bir projeyi ayağa kaldırmaya çalışyorum. CMD comut satırından nasıl yapabilrim?
20 Ocak 2017 Java kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
1 cevap 245 gösterim
245 gösterim
Spring Boot kullanırken VueJs uygulamamdan bir http PUT istek yolladığımda CORS hatası alıyorum. Nasıl çözebilirim?
2 Şubat 2021 Java kategorisinde kenan 6.2k puan sordu
0 oy
1 cevap 312 gösterim
312 gösterim
Spring Boot ile bir uygulama geliştiriyorum. Haliyle birsürü entity sınıfım var. Swagger entegre ettiğim zaman bu entity sınıflarım için de endpoint açıldığını görüyorum. Ben sadece benim istediğim endpointlerin orada görünmesini istiyorum. Bunu nasıl sağlayabilirim?
1 Şubat 2021 Java kategorisinde kenan 6.2k puan sordu