Java Primefaces登录验证Servlet筛选器-仍然可以直接通过其URL访问受保护的页面

Java Primefaces登录验证Servlet筛选器-仍然可以直接通过其URL访问受保护的页面,java,servlets,primefaces,servlet-filters,basic-authentication,Java,Servlets,Primefaces,Servlet Filters,Basic Authentication,我有三个primefaces(4.0版)网页。其中一个是login.xhtml,在允许用户访问其他两个网页之前,我想使用它对用户进行身份验证。我正在使用Tomcat服务器(v7.0) 我的问题是我可以从我的基本url访问login.xhtml:http://localhost:8080/controlservice-服务器/-->执行正确的用户身份验证,然后传递到正确的网页 但是,我可以直接从其他两个网页的URL访问它们,而无需通过登录页面,因此任何人都可以访问它们 My web.xml: &l

我有三个primefaces(4.0版)网页。其中一个是login.xhtml,在允许用户访问其他两个网页之前,我想使用它对用户进行身份验证。我正在使用Tomcat服务器(v7.0)

我的问题是我可以从我的基本url访问login.xhtml:
http://localhost:8080/controlservice-服务器
/-->执行正确的用户身份验证,然后传递到正确的网页

但是,我可以直接从其他两个网页的URL访问它们,而无需通过登录页面,因此任何人都可以访问它们

My web.xml:

<context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>

<welcome-file-list>
        <welcome-file>Login.xhtml</welcome-file>
    </welcome-file-list>

<servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

<servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.faces</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>

您应该在@WebFilter注释中更改urlPatterns属性,如下所示:

@WebFilter(filterName = "PrimefacesAuthFilter", urlPatterns={"*.xhtml"})
@WebFilter(filterName = "PrimefacesAuthFilter", urlPatterns={"*.xhtml"})