我正在创建一个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不会更改。在这种情况下,未经身份验证的用户可以访问受保护的页面。
最好的方法是什么?确保页面被重定向而不是转发是否足够好?我应该在每个检查用户是否登录的安全页面中编写代码吗?
答案 0 :(得分:0)
使用POST进行页面到页面导航被认为是不好的做法。不要使用JSF h:commandLink
或h:commandButton
进行简单的页面到页面导航。两者都生成一个POST表单,这对于简单的导航完全没有必要和SEO不友好。而是使用h:link
或h:button
代替。它分别呈现一个普通的香草GET链接和GET表单。
如果您要提交POST表单并且结果页面与表单页面不同,那么使用PRG (Post-Redirect-Get) pattern被视为良好做法。您可以使用<redirect/>
。