6.1. 使用Spring Security保护Jersey端点

可以使用Spring Security来保护基于Jersey的Web应用程序,其方式与用来保护基于Spring MVC的Web应用程序的方式几乎相同。但是,如果您想在Jersey上使用Spring Security的方法级安全性,则必须将Jersey配置为使用setStatus(int)pretty sendError(int)。这样可以防止Jersey在Spring Security有机会向客户端报告身份验证或授权失败之前提交响应。
jersey.config.server.response.setStatusOverSendError属性必须true在应用程序的ResourceConfigBean上设置为,如以下示例所示:

  1. @Component
  2. public class JerseyConfig extends ResourceConfig {
  3. public JerseyConfig() {
  4. register(Endpoint.class);
  5. setProperties(Collections.singletonMap("jersey.config.server.response.setStatusOverSendError", true));
  6. }
  7. }

6.2. 与另一个Web框架一起使用Jersey

要将Jersey与其他Web框架(例如Spring MVC)一起使用,应对其进行配置,以便它将允许其他框架处理无法处理的请求。首先,通过将spring.jersey.type应用程序属性配置为值,将Jersey配置为使用过滤器而不是Servlet filter。其次,配置您的ResourceConfig请求以转发可能导致404的请求,如以下示例所示。

  1. @Component
  2. public class JerseyConfig extends ResourceConfig {
  3. public JerseyConfig() {
  4. register(Endpoint.class);
  5. property(ServletProperties.FILTER_FORWARD_ON_404, true);
  6. }
  7. }