2016-07-23 4 views
0

ユーザーがadminかどうかを確認する必要があります。IsUserInRoleビジネスロジックのJetty制約

私はBasic-Authを使用しており、org.eclipse.jetty.websocketを広く使用しています。私はwebsocketハンドラで制約をチェックする必要があります。

私が言ってくださいより良い方法がある場合

//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); 

答えて

0

をjavax.websocketないjetty.websocketを使用しています。これはきれいではありません。

//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; 
}