2013-08-27 64 views
0

我有一个资源类作为访问PostProcessInterceptor中的资源类字段?

@Path("secure") 
@RequestScoped 
// @SecurityChecked 
public class SecureResource { 

    @Context 
    private HttpServletRequest request; 

    @GET 
    @SecurityChecked 
    public Response getUser() { 
     return Response.ok("authenticated successfully!").build(); 
    } 

    @POST 
    public Response login(@FormParam("user") @Nonnull final String user, 
          @FormParam("password") @Nonnull final String password) { 
     final String authToken = TokenUtils.createToken(user); 
     return Response.ok().header(AUTH_TOKEN, authToken).build(); 
    } 

    @PUT 
    public Response updateUser() { 
     return Response.ok("updating user").build(); 
    } 
} 

,我有一个PostProcessInterceptor,我想访问头类的request

@Interceptor 
@Provider 
@ServerInterceptor 
@SecurityChecked 
public class SecurityCheckInterceptor implements PostProcessInterceptor { 
    private static final Pattern PATTERN = Pattern.compile(":"); 
    private static final Logger LOGGER = LoggerFactory.getLogger(SecurityCheckInterceptor.class); 
    @Override 
    public void postProcess(final ServerResponse response) { 
     // access the Resource class request object 

    } 
} 

我不知道我怎么可以在这里访问请求对象

请帮

谢谢

回答

0

为什么要访问PostProcessInterceptor中的请求?你确定你不能使用

public static class MyInterceptor implements PreProcessInterceptor{ 
... 
@Override 
public ServerResponse preProcess(HttpRequest request, ResourceMethod method){...} 
} 

这里?

+0

是的,因为请求有'Headers',我需要在发送响应之前访问这些来创建一个新的Header。这有意义吗? – daydreamer

+0

我不熟悉这个api。也许看看http://www.mastertheboss.com/resteasy/resteasy-interceptors-tutorial/page-2,其中respone对象是在preProcess处理程序中手动创建的 - 新的头文件()被传递。可能你应该能够在那里添加标题。 – freakman