Nou Generator de prompt AI — scrie prompturi mai bune pentru ChatGPT, Claude și Gemini →

@PreAuthorize și @PostAuthorize în Spring Security în Spring Boot

security Spring Boot 3.x / Spring Security 6 Q&A / Distribuie cod

Autorizare granulară la nivel de metodă folosind expresii SpEL: protecția metodelor din Service sau Controller pe bază de roluri și permisiuni.

Sintaxă
@PreAuthorize("hasRole('ADMIN') or #userId == authentication.principal.id")

În timp ce SecurityFilterChain securizează rutele HTTP la nivel de URL, adnotarea @PreAuthorize oferă o securitate profundă (Defense in Depth) direct pe metodele de business din stratul de Service sau Controller.

Utilizând expresii SpEL (Spring Expression Language), @PreAuthorize poate evalua roluri (hasRole('ADMIN')), autorități specifice sau chiar parametri ai metodei curente (de exemplu verificând dacă utilizatorul curent logat este proprietarul resursei pe care dorește să o modifice).

Exemplu: Activare Method Security și protecție @PreAuthorize cu SpEL
package ro.dexblog.demo.service;

import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Service;

@Configuration
@EnableMethodSecurity // Obligatoriu pentru activarea adnotărilor @PreAuthorize
class MethodSecurityConfig {}

@Service
public class DocumentService {

    @PreAuthorize("hasRole('ADMIN')")
    public void deleteAnyDocument(Long docId) {
        System.out.println("Document șters de administrator: " + docId);
    }

    // Permis dacă are rolul MANAGER sau dacă este chiar autorul documentului:
    @PreAuthorize("hasRole('MANAGER') or #authorUsername == authentication.name")
    public void editDocument(Long docId, String authorUsername) {
        System.out.println("Document editat de autorul legitim: " + authorUsername);
    }
}

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: @PreAuthorize și @PostAuthorize în Spring Security

Ai o nelămurire despre utilizarea comenzii @PreAuthorize și @PostAuthorize în Spring Security sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.