JSF2导航处理程序

时间:2011-12-16 14:47:12

标签: jsf-2

我们正在使用JSF2并使用导航处理程序来控制我们的Web应用程序的公共页面和安全页面之间的导航。

逻辑变得如此复杂,因为我们需要检查哪个页面是安全的,哪个页面是公开的。

是否有任何框架或更好的方法来处理导航处理程序......

1 个答案:

答案 0 :(得分:2)

通常,您将受保护的网页放在一个公共网址路径中,例如/app/*/secured/*/private/*等。这样您就可以使用单个入口点来控制访问权限。如果您使用的是container managed security,则需要指定正确的网址格式:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Restricted pages</web-resource-name>
        <url-pattern>/secured/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>*</role-name>
    </auth-constraint>
</security-constraint>

如果您使用自行开发的安全性,那么您需要为此实现Filter

@WebFilter("/secured/*")
public class AuthorizationFilter implements Filter {
    // ...
}

或者当你还没有使用Servlet 3.0时,请按照以下方式注册,而不是使用@WebFilter

<filter>
    <filter-name>authorizationFilter</filter-name>
    <filter-class>com.example.AuthorizationFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>authorizationFilter</filter-name>
    <url-pattern>/secured/*</url-pattern>
</filter-mapping>

doFilter()方法中,您需要编写代码来检查用户是否登录,然后继续链接或将响应重定向到登录页面(当然这不是由相同的网址格式)。

另见: