Nie działające @PreAuthorize

Nie działające @PreAuthorize
ZA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 174
0

Witajcie,
Mam problem z adnotacją @PreAuthorize. Metoda która jest zawarta w adnotacji nie jest wykonywana.

Kopiuj
    @PreAuthorize("hasRole('ADMIN')")
    public void removeMember(Member m) {
        
    }

Podejrzewam że problem leży w źle skonfigurowanym aop.
W pom.xml mam takie dependencies

Kopiuj
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>4.0.3.RELEASE</version>
        </dependency>

         <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.8.5</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.5</version>
        </dependency>

W kontekście springa mam zdefiniowane:

Kopiuj
<aop:aspectj-autoproxy/>

Proszę o pomoc :)

NoZi
  • Rejestracja: dni
  • Ostatnio: dni
0

A jak wyciągasz te role ?

ZA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 174
0

Zwracam w liście w obiekcie który implementuje UserDetail. Podejrzewam że nie w tym problem, bo jeżeli dam tam np. denyAll, albo permitAll - nie będzie żadnej różnicy. Po prostu metoda w adnotacji się nie wykonuje

NoZi
  • Rejestracja: dni
  • Ostatnio: dni
0

A włączyłeś obsługę jej?

niezdecydowany
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Bieszczady
0

A zwykłe filtrowanie po spring security Ci działa ? czyli jakbyś w xml dał regexp na np: "/home/*"

ZA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 174
0

Tak, zwykłe filtrowanie działa. Obsługa adnotacji włączona.

Kopiuj
<sec:http auto-config="true" use-expressions="true">

Nie działają tylko w PreAuthorize

ZA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 174
0

Poradziłem sobie z problemem. aop:aspectj-autoproxy/ było z złym miejscu. Teraz jest tam gdzie definiowany jest servlet. Gdy user nie ma uprawnień do wykonania tej metody następuje przekierowanie na stronę logowania. Istnieje możliwość pokazania jakiegoś komunikatu że nie masz permisji? Jak sprawdzić że przekierowanie na stronę logowania nastąpiło z powodu braku uprawnień, a nie np. dobrowolnego wejścia prez usera?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.