2015-12-09 3 views
10

Die Klasse javax.servlet.http.HttpServletRequest hat eine Methode namens isUserInRole. Ich benutze dies um zu überprüfen, ob ein Benutzer zum Beispiel die admin Rolle hat. Bei dieser Methode wird jedoch zwischen Groß- und Kleinschreibung unterschieden. Wenn also die Rolle in der Anfrage Admin oder ADMIN war, dann wäre isUserInRole("admin") falsch. Ich verwende die isUserInRole Methode an mehreren Stellen über mehrere Anwendungen hinweg, um nach verschiedenen Rollen zu suchen.Prüfung auf Rolle in HttpServletRequest ohne Berücksichtigung der Groß-/Kleinschreibung

Gibt es eine Möglichkeit, die isUserInRole Funktionalität case-insensitiv zu erreichen, die nicht jede unterschiedliche mögliche Fallkombination mit isUserInRole überprüfen muss?

+0

Warum? Sie haben Probleme, Ihre Rollennamen konsistent zu buchstabieren? – EJP

+0

Es gibt mehrere Versionen eines Authentifizierungsdienstes eines Drittanbieters, die ich in verschiedenen Umgebungen verwende, von denen eine die Rollennamen klein hält, während die andere die Groß-/Kleinschreibung beachtet. –

Antwort

13

Sie könnten einen Filter implementieren, die Anfragen wickelt eine HttpServletRequestWrapper mit - implementieren Ihre HttpServletRequestWrapper die isUserInRole() Methode zu überschreiben es Groß- und Kleinschreibung (zB konfigurieren, dass alle Rollen in Großbuchstaben zu machen, params Test Rolle in Großbuchstaben konvertieren).

Eine schnelle Suche wird viel HTTPServletRequestWrapper Beispiele finden ...

3

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

Karte Nur mehrere Rollennamen an die Admin-Rolle:

<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

Der Aufruf von 'isUserInRole' wird verwendet, um verschiedene Code-Pfade auf Ruhe-Endpunkten basierend auf der Rolle auszuführen. Wir haben diese Art von Setup bereits in unserer web.xml für Zugriffsbeschränkungen. –