Сервлеты Java, JAX-RS - Проблемы с получением аутентификации на основе форм - PullRequest
1 голос
/ 07 ноября 2010

Я использую JAX-RS Jersey в качестве моего контроллера и JSP для моего обзора. Вот пример:

@Path("/")
@Stateless
public class HomeController {

    @Context
    private HttpServletRequest request;

    @EJB
    private EmployeeServiceLocal employeeService;

    @GET
    public Viewable getHomePage() {
        Employee employee = employeeService.getEmployeeById(1);
        request.setAttribute("employee", employee);
        return new Viewable("/home.jsp", null);
    }
}

Все работало нормально, пока я не попытался реализовать аутентификацию с использованием JAAS. Я считаю, что происходит то, что мой фильтр не позволяет серверу обрабатывать мой запрос j_security_check (я использую аутентификацию на основе форм с jdbcRealm) Причина, по которой я считаю это, заключается в том, что я получаю сообщение об ошибке ниже при отправке формы для входа в систему:

The requested resource () is not available.

Имеет ли это смысл? Как я могу заставить свой фильтр не применяться к / j_security_check?

Вот моя конфигурация фильтра в web.xml

<filter>
  <filter-name>Jersey Filter</filter-name>
  <filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class>
  <init-param>
    <param-name>com.sun.jersey.config.feature.Redirect</param-name>
    <param-value>true</param-value>
  </init-param>
  <init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>cheetah.frontend.controllers</param-value>
  </init-param>
  <!-- pass to next filter if Jersey/App returns 404 -->
  <init-param>
    <param-name>com.sun.jersey.config.feature.FilterForwardOn404</param-name>
    <param-value>true</param-value>
  </init-param>
  <!-- match regex to determine if Jersey/App is invoked or pass to next filter -->
  <init-param>
    <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
    <param-value>/(images|css|jsp)/.*</param-value>
  </init-param>
</filter>

<filter-mapping>
  <filter-name>Jersey Filter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 18 сентября 2011

Подобный код работал для меня в GlassFish (сервер приложений даже не передает вызов j_security_check сервлету и обрабатывает его самостоятельно).Вы включили конфигурацию входа и установили ограничение безопасности аутентификации в своем файле web.xml?Какой сервер приложений вы используете?

...