2010-11-06 29 views
1

J'utilise JAX-RS Jersey comme contrôleur et les JSP pour ma vue. Voici un exemple:Java Servlets, JAX-RS - Je n'arrive pas à utiliser l'authentification basée sur les formulaires

@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); 
    } 
} 

Tout a fonctionné bien et dandy jusqu'à ce que j'essaye d'implémenter l'authentification en utilisant JAAS. Je crois que ce qui se passe est que mes filtres empêchent le serveur de traiter ma requête j_security_check (j'utilise l'authentification basée sur un formulaire avec un jdbcRealm). La raison pour laquelle je crois que c'est parce que je reçois l'erreur ci-dessous lors de la présentation de mon formulaire de connexion:

The requested resource() is not available. 

Est-ce que ce sens? Comment puis-je faire en sorte que mon filtre ne soit pas appliqué à/j_security_check?

Voici ma configuration de filtre dans 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> 

Merci pour toute aide.

Répondre

0

Un code similaire a fonctionné pour moi dans GlassFish (le serveur d'applications ne transmet même pas l'appel j_security_check au servlet et le gère seul). Avez-vous inclus login config et défini la contrainte de sécurité auth dans votre fichier web.xml? Quel serveur d'applications utilisez-vous?