0

早上好,我需要你的帮助:发生了什么是我正在使用 jboss 服务器在 java 中编程并且正在使用 jsf 接口(primefaces),我的问题是因为当我在我的应用程序中通过登录进行身份验证时,我被重定向到另一个页面而不是我想要的那个。

登录页面的url是:...login.xhtml

一旦我的登录正确,我就会进入以下网址:...javax.faces.resource/primefaces.js.xhtml

当我的登录正确时,我希望将我带到以下网址:...index.xhtml

除了我的 web.xml 文件有以下代码:

<welcome-file-list>
    <welcome-file>index.xhtml</welcome-file>
</welcome-file-list>

我还注意到,当我删除对文件 pom.xml primefaces ok 的依赖项时,loguearme 将我定向到正确的 url: ...index.xhtml

请帮助我。

4

1 回答 1

0

容器管理的安全性将重定向到触发身份验证检查的最后一个 HTTP 请求。在您的情况下,它显然是自动包含的 PrimeFaces JavaScript 文件。看起来您的安全约束中有一个过于通用的 URL 模式,例如/*or *.xhtml,不仅涵盖 JSF 页面,还涵盖 CSS/JS/image 资源。该primefaces.js文件显然在登录页面中被引用。所以当登录页面打开时,引用的primefaces.js文件会再次触发身份验证检查,登录成功后会记住使用其 URL 进行重定向。

您想从身份验证检查中排除 JSF 资源。您可以通过没有身份验证约束/javax.faces.resource/*的安全约束排除通用 URL 模式来做到这一点:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Allowed resources.</web-resource-name>
        <url-pattern>/javax.faces.resource/*</url-pattern>
    </web-resource-collection>
    <!-- No <auth-constraint>! -->
</security-constraint>
于 2013-11-08T17:58:01.907 回答