Wie man die Rollen von UserPrincipal in Java?
Ich eine Klasse angelegt(Benannt als CustomRequestWrapper), die Umsetzung HttpServletRequestWrapper .In CustomRequestWrapper Klasse, ich bin Einstellung user principal.Jetzt in meinem code möchte ich, um die Liste der Rollen aus der user principal.Ich habe versucht, GenericPrincipal-Klasse von tomcat-catalina jar, aber ich bin immer casting Ausnahme CustomRequestWrapper kann nicht umgewandelt werden, GenericPrincipal -. Könnte jeder eine Idee haben, wie man Rollen von user principal?
Hinweis: ich benutze Apache Tomcat Server
Hier ist mein code:
public class CustomRequestWrapper extends javax.servlet.http.HttpServletRequestWrapper {
public CustomRequestWrapper(String User,List<String> roles,HttpServletRequest request) {
super(request);
this.user=User;
this.roles=roles;
this.realRequest=request;
headerMap = new HashMap();
}
String user;
List<String> roles = null;
HttpServletRequest realRequest;
private Map headerMap;
public void addHeader(String name, String value) {
headerMap.put(name, new String(value));
}
public Enumeration getHeaderNames() {
HttpServletRequest request = (HttpServletRequest) getRequest();
List list = new ArrayList();
for (Enumeration e = request.getHeaderNames(); e.hasMoreElements();) {
list.add(e.nextElement().toString());
}
for (Iterator i = headerMap.keySet().iterator(); i.hasNext();) {
list.add(i.next());
}
return Collections.enumeration(list);
}
public String getHeader(String name) {
Object value;
if ((value = headerMap.get("" + name)) != null)
return value.toString();
else
return ((HttpServletRequest) getRequest()).getHeader(name);
}
@override
public boolean isUserInRole(String role) {
if (roles == null) {
return this.realRequest.isUserInRole(role);
}
return roles.contains(role);
}
@override
public Principal getUserPrincipal() {
if (this.user == null) {
return realRequest.getUserPrincipal();
}
//make an anonymous implementation to just return our user
return new Principal() {
public String getName() {
return user;
}
};
}
}
Sind Sie versuchen, um die Rollen für einen Kater authentifizierte Benutzer, das heißt die Rollen deklariert tomcat-users.xml ?
Nein .Ich werde versuchen, die Rollen für meine app authentifizierte Benutzer
Fine, könnten Sie zeigen den code, der für Sie
Bitte überprüfen Sie es ,ich habe meinen code
Nein .Ich werde versuchen, die Rollen für meine app authentifizierte Benutzer
Fine, könnten Sie zeigen den code, der für Sie
CustomRequestWrapper
?Bitte überprüfen Sie es ,ich habe meinen code
InformationsquelleAutor Nadendla | 2014-05-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus dem code, den Sie Spritzen, der Benutzername und die Rollen, die in Ihrem
CustomRequestWrapper
im Konstruktor. Als Sie überschriebengetUserPrincipal
imCustomRequestWrapper
es gibt nicht mehr eine tomcatGenericPrincipal
aber deine anonyme Klasse, die nur weiß um den Namen des Benutzers, den Sie gab, diese übergetName()
. Sie sollten versuchen, wieder ein tomcatGenericPrincipal
durchAlternativ können Sie erstellen eine benutzerdefinierte Implementierung von Prinzipal-wissen über Rollen.
Funktioniert das nur, wenn Sie erfolgreich Spritzen Sie Ihre Benutzer und deren Rollen in
CustomRequestWrapper
Bau.InformationsquelleAutor Serge Ballesta
Der Ausnahme, die Sie erwähnt werden, können der Schlüssel sein, um Ihr Problem zu lösen
Haben Sie zum cast der
Principal
Objekt und nicht dieCustomRequestWrapper
. Hier ist eine Beispiel-Methode, die Sie hinzufügen können, die unter IhremCustomRequestWrapper
Klasse und sollte mit return die Liste der Benutzer-Rollen unter Tomcat. (Ich gehe davon aus, dass dies ein chaotisch-Methode):So dass die endgültige
CustomRequestWrapper
wird wie folgt sein:InformationsquelleAutor tmarwen