2012-11-08 37 views
0

我使用球衣來建立一個寧靜的web服務。 爲了授權目的,我實現了一個類AuthorizationFilter,它實現了ContainerRequestFilter。我在我的web.xml如下應用該過濾器:要輸入什麼使用RolesAllowed澤西島

<init-param> 
     <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name> 
     <param-value>filters.AuthorizationFilter</param-value> 
    </init-param> 

我AuthorizationFilter設置每個請求的SecurityContext,根據認證的結果。

request.setSecurityContext(new Authorizer(webuser)); 

我的授權人看起來是這樣的:

public class Authorizer implements SecurityContext { 

    private WebUser webuser; 
    private Principal principal; 

    public Authorizer(final WebUser webuser) { 
     this.webuser = webuser; 
     this.principal = new Principal() { 

      @Override 
      public String getName() { 
       return webuser.getUsername(); 
      } 
     }; 
    } 

    @Override 
    public String getAuthenticationScheme() { 
     return SecurityContext.FORM_AUTH; 
    } 

    @Override 
    public Principal getUserPrincipal() { 
     return principal; 
    } 

    @Override 
    public boolean isSecure() { 
     return true; 
    } 

    @Override 
    public boolean isUserInRole(String role) { 
     return role.equals(webuser.getRole()); 
    } 

} 

現在我想標註爲我的終點的方法允許的角色:

@GET 
    @Produces(MediaType.APPLICATION_JSON) 
    @Path("{id}") 
    @RolesAllowed({"EMPLOYEE"}) 
    @Override 
    public Response Retreive(@PathParam("id") int id) { 
     return super.Retreive(id); 
    } 

但它說:「RolesAllowed不能得到解決到一個類型「。所以我的問題是。如何解決這個問題和b。我做對了嗎?

在此先感謝 克里斯

回答

0

關於你的問題的第一部分:您可能會丟失依賴於Java EE的API,其中RolesAllowed註解定義(見JavaDoc

如果你是使用Maven構建你的項目,嘗試添加一個依賴到javax:javaee-web-api:6.0到你的pom.xml。

+0

我會在回家的路上試試這個:P ty – Coxer

+0

這不行,我猜是因爲標準的tomcat沒有提供api的實現? – Coxer

+0

INFO:validateJarFile(C:\ Users \ AuspeX \ git \ zeiterfassung_backend \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps \ restserver \ WEB-INF \ lib \ javaee-web-api- 6.0.jar) - jar沒有加載。請參閱Servlet規範2.3,第9.7.2節。 Offending類:javax/servlet/Servlet.class 2012年11月9日下午1:40:50 org.apache.catalina.core.StandardContext listenerStart SEVERE:配置com.sun.faces.config.ConfigureListener類的應用程序偵聽器時出錯 java.lang.ClassNotFoundException:com.sun.faces.config.ConfigureListener 是添加依賴項的結果 – Coxer