0
JWT를 통해 Auth 용 Jersey의 NameBinding을 사용하여 사용자 정의 주석을 만들고 싶습니다.이 기술을 다른 일반 Java 프로젝트에서 사용했지만 모든 것이 완벽하게 작동하지만 DropWizard 프로젝트에서는 작동하지 않습니다. 내가 아는 한 DW 또한 REST를 위해 Jersey를 사용합니다. 이것은 내 테스트 코드이지만 작동하지 않습니다.DropWizard에서 이름 바인딩 (저지)
인터페이스 :
@NameBinding
@Retention(RUNTIME)
@Target({TYPE, METHOD})
public @interface Auth {}
구현 :
@Auth
@Provider
public class AuthFilter implements ContainerRequestFilter {
private static final String SECRET = "SOME_SECRET_STRING";
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
try {
String userToken = requestContext.getHeaderString("token");
Claims body = Jwts.parser().setSigningKey(SECRET).parseClaimsJws(userToken).getBody();
if(body.getExpiration().before(new Date())) {
requestContext.abortWith(Response
.status(Response.Status.UNAUTHORIZED)
.entity("Token is expired")
.build());
}
} catch (Exception e) {
requestContext.abortWith(Response
.status(Response.Status.UNAUTHORIZED)
.entity("Error")
.build());
}
}
}
나머지 :
@GET
@Path("/test")
@Auth
public String test() {
return "Hello, " + userName;
}
할 수있는 사람 그 이 문제는?