例如
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
if (((HttpServletRequest) request).getSession().getAttribute("user") == null) {
((HttpServletResponse) response).sendRedirect("error.jsf"); // Not logged in, so redirect to error page.
} else {
chain.doFilter(request, response); // Logged in, so just continue.
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我假设它User
已经按照您通常的预期放在会话范围内.它可以是具有名称的会话作用域JSF托管bean user
.
导航规则不适用,因为在正常GET
请求期间没有"bean操作"的方法.当要构建托管bean时,还要进行重定向是不可行的,因为当在正常GET
请求期间构建托管bean时,响应已经开始呈现并且这是一个不归路的点(它只会产生IllegalStateException: response already committed
).PhaseListener很麻烦且非常庞大,因为您实际上不需要监听任何JSF阶段.您只想听取"普通"HTTP请求以及会话范围中某个对象的存在.为此,过滤器是完美的.
归档时间: |
|
查看次数: |
8814 次 |
最近记录: |