2014-12-27 241 views
1

我的网站包含两种类型的用户,用户和管理员。我试图访问管理控制页面限制用户,我试图做这样的内部doFilter()登录时的用户限制页面

System.out.print("\nNumber of objects constructed:->" + Counter.show() + "\n\n"); 
String path = req.getRequestURI().substring(req.getContextPath().length()); 

if (path.startsWith("/faces/xadmin.xhtml") && !JloginDAO.per.equals("admin")) { 
    res.sendError(HttpServletResponse.SC_UNAUTHORIZED); 
} 

if (path.startsWith("/faces/calendar.xhtml") && !JloginDAO.per.equals("admin")) { 
    res.sendError(HttpServletResponse.SC_UNAUTHORIZED); 
} 

,但它不工作,并且没有错误显示!

的web.xml

<display-name>web2</display-name> 
<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> 
    <description></description> 
    <display-name>DisplayImage</display-name> 
    <servlet-name>DisplayImage</servlet-name> 
    <servlet-class>calender.DisplayImage</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>DisplayImage</servlet-name> 
    <url-pattern>/DisplayImage</url-pattern> 
</servlet-mapping> 

<servlet> 
    <description></description> 
    <display-name>PrivateDisplayImage</display-name> 
    <servlet-name>PrivateDisplayImage</servlet-name> 
    <servlet-class>displayCalendar.PrivateDisplayImage</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>PrivateDisplayImage</servlet-name> 
    <url-pattern>/PrivateDisplayImage</url-pattern> 
</servlet-mapping> 

    <servlet> 
    <description></description> 
    <display-name>PublicDisplayImage</display-name> 
    <servlet-name>PublicDisplayImage</servlet-name> 
    <servlet-class>public_display_Calendar.PublicDisplayImage</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>PublicDisplayImage</servlet-name> 
    <url-pattern>/PublicDisplayImage</url-pattern> 
</servlet-mapping> 


<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 
<filter> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class> 
    <init-param> 
    <param-name>thresholdSize</param-name> 
    <param-value>10240</param-value> <!-- 10 Mb --> 
</init-param> 
</filter> 
    <filter-mapping> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <servlet-name>Faces Servlet</servlet-name> 
    </filter-mapping> 
    </web-app> 

任何想法?

+0

你真的想让'FacesServlet'听这个URL模式'/faces/*'而不是' * .xhtml'吗? – Tiny

+0

目前在'web.xml'中只有一个'org.primefaces.webapp.filter.FileUploadFilter'过滤器。你是否碰巧使用了一个带有适当URL模式的注释,比如'@WebFilter(filterName =“FilterName”,urlPatterns = {“/ YourPattern *”} ...)'? – Tiny

+0

当我尝试了URL模式' * .xhtml'它给我错误在外部上下文中找不到作为资源 – Jason

回答

1

确保您的URL模式是这样的:

<url-pattern>*.xhtml</url-pattern> 

和你的web过滤器这样

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

你的代码永远不会被调用,因为它是从侧试{},请确保你有你代码在req定义下。

+0

呃!该URL模式在这里'urlPatterns = {“* .xhtml”}'将被全局应用于所有以'.xhtml'扩展名/后缀结尾的页面。因此,无论何时在整个应用程序的任何地方请求带有“.xhtml”扩展名的页面,都会调用该过滤器。然而,只有当'/ admin/*'等受限制区域请求具有'.xhtml'后缀的页面时,才应该调用过滤器。 – Tiny

+1

它的工作谢谢@ Moodi1409 – Jason

+0

@ user2453286欢迎您:) – Moodi1409

相关问题