2016-07-23 27 views
0

Ich muss überprüfen, ob ein Benutzer Admin ist.IsUserInRole Jetty Einschränkungen für Geschäftslogik

Ich benutze Basic-Auth und extensive Verwendung von org.eclipse.jetty.websocket; Ich muss Einschränkungen in meinem Websocket-Handler überprüfen.

Ich verwende jetty.websocket javax.websocket nicht

//THIS THROWS AN EXCEPTION - AN HTTP UPGRADE REQUEST WON'T ALLOW FOR isUserInRole(String role); 
import org.eclipse.jetty.websocket.*; 
... 
ServletUpgradeRequest upgradeRequest = (ServletUpgradeRequest) session.getUpgradeRequest(); 
upgradeRequest.isUserInRole("admin-role"); 

//DON'T KNOW HOW TO USE THIS 
import org.eclipse.jetty.util.security.*; 
... 
security.getIdentityService().getSystemUserIdentity().isUserInRole(String string, Scope scope); 

Antwort

0

Wenn ein besserer Weg, es bitte sagen. Das ist nicht schön.

//in my MyWebsocketServer.java 
... 
if (ServerMain.hasRole(sess.getUpgradeRequest().getUserPrincipal().getName(),"admin-role")) { 
... 

//in my ServerMain.java 
... 
public static boolean hasRole(String usr, String role){ 
    Iterator iter = loginService.getUsers().get(usr).getSubject().getPrincipals().iterator(); 
    while (iter.hasNext()){ 
     if (((Principal) iter.next()).getName().equals(role)) return true; 
    } 
    return false; 
}