2010-08-06 46 views
1

我正在制作一个Web应用程序,其中某些页面受到登录保护。我创建了一个JDBC安全领域GlassFish中对于这一点,并使用窗体身份验证JSF转发和安全约束问题

我使用的导航规则,将用户重定向到该网站的安全区域(该方法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

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

如果您无论如何都要提交POST表单并且结果页面与表单页面不同,那么使用PRG (Post-Redirect-Get) pattern被认为是最佳做法。您可以使用<redirect/>