Nie działające @PreAuthorize

Nie działające @PreAuthorize
ZA
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 5 lat
  • 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:około 16 lat
  • Ostatnio:21 dni
0

A jak wyciągasz te role ?


Hate the sin, love the sinner
ZA
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 5 lat
  • 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:około 16 lat
  • Ostatnio:21 dni
0

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


Hate the sin, love the sinner
niezdecydowany
niezdecydowany
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 9 lat
  • Lokalizacja:Bieszczady
0

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


"Perhaps surprisingly, concurrent programming isn’t so much about threads or
locks, any more than civil engineering is about rivets and I-beams."
ZA
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 5 lat
  • 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

edytowany 1x, ostatnio: Zaprogramowany
ZA
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 5 lat
  • 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.