Nie działające @PreAuthorize

0

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

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

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

        <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:

<aop:aspectj-autoproxy/>

Proszę o pomoc :)

0

A jak wyciągasz te role ?

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

0

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

0

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

0

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

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

Nie działają tylko w PreAuthorize

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?

1 użytkowników online, w tym zalogowanych: 0, gości: 1