如何在没有web.xml的情况下应用ContainerRequestFilter?

问题描述 投票:1回答:1

我目前正在使用球衣2.27和码头9.4制作RESTapi。在此服务器上,我尝试应用过滤器:

@AuthenticationEndpoint.Secured
@Provider
@Priority(Priorities.AUTHENTICATION)
public class AuthenticationFilter implements ContainerRequestFilter {

    private static final String REALM = "example";
    private static final String AUTHENTICATION_SCHEME = "Bearer";

    @Override
    public void filter(ContainerRequestContext requestContext) throws IOException {

        //Authentication code
    }

    private boolean isTokenBasedAuthentication(String authorizationHeader) {

    }

    private void abortWithUnauthorized(ContainerRequestContext requestContext) {


    }

    private void validateToken(String token) throws Exception {

    }
}

但是,此过滤器未触发。

这是我的终点:

@Path("/authenticate")
public class AuthenticationEndpoint {

    Machine machine = Machine.getInstance();

    @NameBinding
    @Retention(RUNTIME)
    @Target({TYPE, METHOD})
    public @interface Secured { }



    @POST
    @Path("/authenticate")
    @Secured
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response authenticateUser(
            AuthenticationRequest authenticationRequest){

    }

我没有web.xml,我也不知道如何实际触发此过滤器。有人对此有何建议?我很难理解此服务器过滤器配置。PS:我遗漏了方法的内容,因为我认为这太混乱了,如果有必要,我当然会添加它。

java rest jersey jetty servlet-filters
1个回答
0
投票

[创建应用程序时必须注册过滤器,类似

public class MyApplication extends ResourceConfig {
  register(AuthenticationFilter.class)
  // yada yada
}
© www.soinside.com 2019 - 2024. All rights reserved.