JSF转发和安全约束的问题

时间:2010-08-06 06:36:20

标签: security jsf jsf-2

我正在创建一个Web应用程序,其中某些页面受到登录保护。我为此在glassfish中创建了一个JDBC安全领域,并使用了Form身份验证(类似于方法described here

我正在使用导航规则将用户重定向到网站的安全区域:

<navigation-case>
        <from-outcome>showResults</from-outcome>
        <to-view-id>/SecureUser/Reservation/New/AvailableResults.xhtml</to-view-id>
        <redirect/>
</navigation-case>
(etc...)

这很好用。但是,如果我在导航案例中跳过重定向标记,则页面的URL不会更改。在这种情况下,未经身份验证的用户可以访问受保护的页面。

最好的方法是什么?确保页面被重定向而不是转发是否足够好?我应该在每个检查用户是否登录的安全页面中编写代码吗?

1 个答案:

答案 0 :(得分:0)

使用POST进行页面到页面导航被认为是不好的做法。不要使用JSF h:commandLinkh:commandButton进行简单的页面到页面导航。两者都生成一个POST表单,这对于简单的导航完全没有必要和SEO不友好。而是使用h:linkh:button代替。它分别呈现一个普通的香草GET链接和GET表单。

如果您要提交POST表单并且结果页面与表单页面不同,那么使用PRG (Post-Redirect-Get) pattern被视为良好做法。您可以使用<redirect/>