【发布时间】:2018-11-05 07:11:18
【问题描述】:
我已经使用 Jersey 2 实现了一个注释,但不知何故代码没有达到那个点。
这些是我的课程:
安全
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Target;
import javax.ws.rs.NameBinding;
@NameBinding
@Retention(RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Secured { }
安全实施:
import javax.annotation.Priority;
import javax.ws.rs.Priorities;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.Provider;
@Secured
@Provider
@Priority(Priorities.AUTHENTICATION)
public class SecureImplementation implements ContainerRequestFilter
{
@Override
public void filter(ContainerRequestContext requestContext) throws
IOException {
System.out.println("Inside Something");
throw new WebApplicationException(Status.UNAUTHORIZED);
}
}
测试类
@Path("/checkClass")
public class TestingClass{
@Secured
@Path("/checkFilter")
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Map<String, String> testing(Input input)
throws Exception {
Map<String, Object> responseMap = new HashMap<String, Object>();
responseMap.put("result","Success");
return responseMap;
}
}
它给了我一个响应,而不是给我一个 401 错误。那么,我在这里做错了什么?
【问题讨论】:
-
返回401错误的代码在哪里?您是否尝试使用过滤器发送 401 错误?
-
GetAllAvailableCandidateList在哪里定义?课堂内extends ResourceConfig? -
@AmidalaSivaKumar 是的,我在 throw new WebApplicationException(Status.UNAUTHORIZED);关于 SecureImplementation
-
@user7294900 抱歉,有一个错字,现在已修复
标签: java jax-rs jersey-2.0