簡體   English   中英

如何在沒有 web.xml 的情況下應用 ContainerRequestFilter?

[英]How can I apply ContainerRequestFilter without web.xml?

我目前正在使用 jersey 2.27 和 jetty 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:方法的內容我覺得太亂就不說了,如果有需要我當然會補上。

您必須在創建應用程序時注冊過濾器,例如

public class MyApplication extends ResourceConfig {
  register(AuthenticationFilter.class)
  // yada yada
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM