2016-03-24 14 views
0

Web.xml'deki yapılandırmam aşağıdadır ve bir JwtFilter'im var ancak dinlenme URL'leri çağrıldığında erişilemiyor.Web uygulamasına erişildiğinde veya url vurulduğunda özel yay filtresi çağrılmadı

web.xml

<web-app 
<display-name>Portal Web</display-name> 

<servlet> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/mvc-dispatcher-servlet-spring-config.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

<filter> 
    <filter-name>jwtFilter</filter-name> 
    <filter-class>com.pingle.lola.authentication.JwtFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>jwtFilter</filter-name> 
    <url-pattern>/portal/lola/*</url-pattern> 
</filter-mapping> 

Bu benim JwtFilter

public class JwtFilter extends GenericFilterBean { 

@Override 
public void doFilter(final ServletRequest req, 
        final ServletResponse res, 
        final FilterChain chain) throws IOException, ServletException { 
    final HttpServletRequest request = (HttpServletRequest) req; 
    System.out.println("came here"); 
    final String authHeader = request.getHeader("Authorization"); 
    System.out.println("came here - " + authHeader); 
    if (authHeader == null || !authHeader.startsWith("Bearer ")) { 
     System.out.println("should throw"); 
     throw new ServletException("Missing or invalid Authorization header."); 
    } 

    final String token = authHeader.substring(7); // The part after "Bearer " 
    System.out.println("came here" + token); 

    try { 
     final Claims claims = Jwts.parser().setSigningKey("secretkey") 
      .parseClaimsJws(token).getBody(); 
     request.setAttribute("claims", claims); 
    } 
    catch (final SignatureException e) { 
     throw new ServletException("Invalid token."); 
    } 

    chain.doFilter(req, res); 
} 

}

ve ben temel dinlenme API confugured edilir denetleyicisi var. Herhangi bir URL'nin localhost: 8080/portal/lola/getData gibi isabetli olup olmadığını kontrol etmeye çalışıyorum. JwtFilter'a gitmeli ve istek başlığında kimlik doğrulama belirteci olup olmadığını kontrol etmeli ve eğer geçerliyse, diğer bilge atma hatası mesajına geçmelidir. Mantık düzgün yazılır, ancak filtre çağrılmaz ve URL'nin üzerine geldiğimde, filtreye ulaşmadan doğrudan denetleyiciye gider.

benim bahar Config.xml

<context:component-scan base-package="com.pingle.lola.controller"/> 
<mvc:annotation-driven/> 

// bunu neden yarattığını onun herhangi denetleyici :(

<mvc:default-servlet-handler/> 

cevap

0

O /portal gibi görünüyor eşlenmemiştir.END_LIST_ITEM_TAGEND_UNORDERED_LIST_TAG zaman Dont know Uygulama içeriğinin adı Filter url-pattern, bağlam ismini içermemelidir.Bu, filtre url-pattern'inin /lola/* olması gerektiği anlamına gelir. /portal olmadan. Filtre eşleştirmeyi değiştirmeyi deneyin:

<filter-mapping> 
    <filter-name>jwtFilter</filter-name> 
    <url-pattern>/lola/*</url-pattern> 
</filter-mapping> 
İlgili konular