2015-12-09 10 views
10

Klasa javax.servlet.http.HttpServletRequest ma metodę o nazwie isUserInRole. Używam tego do sprawdzenia, czy użytkownik ma na przykład rolę admin. Jednak w tej metodzie uwzględniana jest wielkość liter. Tak więc, jeśli rola w żądaniu to Admin lub ADMIN, wówczas isUserInRole("admin") będzie fałszywa. Używam metody isUserInRole w wielu miejscach w wielu aplikacjach, aby sprawdzić wiele różnych ról.Sprawdzenie niewrażliwości na wielkość dla roli w HttpServletRequest

Czy istnieje sposób na sprawdzenie, czy wielkość liter isUserInRole jest niewrażliwa, nie wymagając sprawdzenia każdej kombinacji możliwych przypadków z isUserInRole?

+0

Dlaczego? Masz problemy z konsekwentnym pisowni nazw swoich ról? – EJP

+0

Istnieje wiele wersji usługi uwierzytelniania innej firmy, z których korzystam w różnych środowiskach, z których jedna zawiera nazwy ról o niskich nazwach, a druga zachowuje wielkość liter. –

Odpowiedz

13

Można realizować filtr, który otacza żądania używając HttpServletRequestWrapper - realizować swoje HttpServletRequestWrapper przesłonić metodę isUserInRole() aby wielkość liter (na przykład skonfigurować wszystkie role w górnej przypadku params rolę testu według konwersji na wielkie litery).

Szybko znajdziemy mnóstwo przykładów HTTPServletRequestWrapper ...

3

http://docs.oracle.com/javaee/6/tutorial/doc/gjiie.html

Wystarczy map wiele nazw ról do roli administratora:

<servlet> 
    <security-role-ref> 
     <role-name>admin</role-name> 
     <role-link>admin</role-link> 
    </security-role-ref> 
    <security-role-ref> 
     <role-name>Admin</role-name> 
     <role-link>admin</role-link> 
    </security-role-ref> 
</servlet> 

<security-role> 
    <role-name>admin</role-name> 
</security-role> 
+0

Wywołanie "isUserInRole" służy do wykonywania różnych ścieżek kodu na punktach końcowych odpoczynku na podstawie roli. Ta konfiguracja jest już dostępna w naszym pliku web.xml w celu uzyskania ograniczenia dostępu. –

Powiązane problemy