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"})