0

私は jersey を使用して安らかな Web サービスを構築しています。承認の目的で、ContainerRequestFilter を実装するクラス AuthorizationFilter を実装しました。次のように、web.xml にこのフィルターを適用しています。

    <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。私はそれを正しくやっていますか?

前もってありがとうクリス

4

1 に答える 1

0

質問の最初の部分について:RolesAllowedアノテーションが定義されている Java EE API への依存関係が欠落している可能性があります ( JavaDocを参照) 。

プロジェクトのビルドに Maven を使用している場合は、依存関係をjavax:javaee-web-api:6.0pom.xml に追加してみてください。

于 2012-11-08T10:48:48.707 に答える