我正在制作一个网络应用程序,其中某些页面受到登录保护。我为此在 glassfish 中创建了一个 JDBC 安全领域,并使用了表单身份验证(类似于方法 此处描述)

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

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

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

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

有帮助吗?

解决方案

使用 POST 进行页面到页面导航被认为是不好的做法。不要使用 JSF h:commandLink 或者 h:commandButton 用于简单的页面到页面导航。两者都会生成一个 POST 表单,对于简单的导航而言,这是完全不必要的且对 SEO 不友好。而是使用 h:link 或者 h:button 反而。它分别呈现一个普通的 GET 链接和 GET 表单。

如果您无论如何都要提交 POST 表单并且结果页面与表单页面不同,则使用 PRG(重定向后获取)模式 被认为是好的做法。您可以使用 <redirect/> 为了这。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top