Jsf 登录时的用户限制页面

Jsf 登录时的用户限制页面,jsf,servlet-filters,Jsf,Servlet Filters,我的网站包含两种类型的用户,用户和管理员。我试图限制用户访问管理控制页面,我试图在doFilter()中这样做: 但它不工作,并且没有显示错误 web.xml <display-name>web2</display-name> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServle

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

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

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>
web2
Facesservlet
javax.faces.webapp.FacesServlet
1.
Facesservlet
/面孔/*
显示图像
显示图像
日历显示图像
显示图像
/显示图像
私有显示图像
私有显示图像
displayCalendar.PrivateDisplayImage
私有显示图像
/私有显示图像
公共显示图像
公共显示图像
public\u display\u Calendar.PublicDisplayImage
公共显示图像
/公共显示图像
30
PrimeFaces文件上载筛选器
org.primefaces.webapp.filter.FileUploadFilter
阈值大小
10240
PrimeFaces文件上载筛选器
Facesservlet

有什么想法吗?

确保您的url模式如下:

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

您的代码从未被调用,因为它在try{}之外,请确保您的代码在req定义下

你真的想要
FacesServlet
听这个URL模式
/faces/*
而不是
*.xhtml
?在
web.xml
中当前只有一个过滤器
org.primefaces.webapp.filter.FileUploadFilter
。您是否碰巧使用了带有适当URL模式的注释,例如
@WebFilter(filterName=“filterName”,urlPatterns={”/YourPattern*“}…)
?当我尝试URL模式
*.xhtml
时,它给了我一个在ExternalContext中找不到的错误作为一个资源否我没有任何注释@TinyDon在你的过滤器类之前没有这个注释
@WebFilter
,你应该在其中有代码(第一个代码片段)?将模式更改为
*.xhtml
后,您应该使用对应于该模式的URL访问页面(如果您坚持使用
*.xhtml
)。嗯!这里的URL模式
urlPatterns={“*.xhtml”}
将全局应用于以
.xhtml
扩展名/后缀结尾的所有页面。因此,每当从整个应用程序的任何位置请求扩展名为
.xhtml
的页面时,都会调用过滤器。但是,只有当从限制区域(如
/admin/*
@user2453286和Moodi1409)请求带有
.xhtml
后缀的页面时,才应该调用该过滤器:请不要试图让碰巧在这里投资时间的其他人成为傻瓜(避免那些加入帐户的把戏,只是为了获取声誉)。你是如何接受这个答案的?此异常也不存在
viewId:/index.xhtml-无法还原视图/index.xhtml
。你是怎么解决的?这是一个过于笼统的模式
*.xhtml
,它覆盖了以
.xhtml
结尾的所有页面(不仅仅是那些存储在受限结构中的页面)?我个人将远离您的问题/答案:(
<url-pattern>*.xhtml</url-pattern>
@WebFilter(filterName = "AuthFilter", urlPatterns = {"*.xhtml"})