0

我最近将 Web 应用程序从 JSF 1.2 升级到 JSF 2.2 以及 RF 3.3.3 到 RF 4.5.7。我目前在加载第一个 login.html 页面时遇到控制台错误。这只发生在第一次加载页面或刷新(F5 或 shift F5)时。当我再次登录并注销时,我没有收到这些错误!URL 完全相同,例如 host:port/xxx/login.html

此问题仅出现在此页面上。我正在使用 Spring (3.1.0) 进行登录,但不确定问题是否相关。applicationContext.xml 中的安全配置为:

<sec:http auto-config='true' pattern="/login.html*" security="none"/>
    <sec:http pattern="/a4j/**" security="none"/>
    <sec:http pattern="/css/**" security="none"/>
    <sec:http pattern="/img/**" security="none"/>
    <sec:http realm="Name goes here">
    <sec:form-login login-processing-url="/j_spring_security_check"
                    login-page="/login.html"
                    authentication-failure-url="/login.html?fail"
                    default-target-url="/main.html"
                    always-use-default-target="true"/>
    <sec:logout logout-url="/logout.html"/>
    <sec:intercept-url pattern="/**" access="ROLE_USER"/>
</sec:http>

在 login.xhtml 中:

<form id="frm-login" action="j_spring_security_check" method="post"> <label class="above">Username<h:inputText id="j_username" /></label> <rich:jQuery selector="#j_username" query="focus()"/><br/> <label class="above">Password<h:inputSecret id="j_password" /></label><br/> <h:commandButton id="submit" name="submit" type="submit" value="Login"> </h:commandButton> </form>

在升级之前,这很好。使用 Firebug,我比较了看到控制台错误和没有看到控制台错误时生成的 HTML。

坏的 抛出控制台错误时生成的 HTML

控制台错误

好的 正常工作时生成的 HTML

我相信我已经应用了所有必要的更新,例如删除旧的 jar 文件(包括删除多余的 Facelets 1.1.14、视图处理程序引用)、更新 RF 代码、XHTML 页面代码和命名空间以及 web.xml 和 faces-config.xml更新。

我知道的一件事是,当我注释掉以下配置时,我没有收到错误。所以不知何故,这会干扰此页面上资源的加载。

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>

任何想法如何解决这个问题?如果我错过了帮助解决此问题所需的一些重要信息,请提前道歉。

更新 1:使用谷歌浏览器上的网络选项卡加载页面时拍摄的图像:

坏的 在此处输入图像描述

好的 在此处输入图像描述

更新 2:

好的 在此处输入图像描述 在此处输入图像描述

坏的 在此处输入图像描述

4

1 回答 1

0

好的,我找到了(BallusC 提供了一些有用的建议)。升级后,我必须更新 applicationContext.xml 中的安全配置,如下所示:

<sec:http auto-config='true' pattern="/login.html*" security="none"/>
    <sec:http pattern="/a4j/**" security="none"/>
    <sec:http pattern="/css/**" security="none"/>
    <sec:http pattern="/img/**" security="none"/>
    <sec:http realm="name goes here">
    <sec:form-login login-processing-url="/j_spring_security_check"
                    login-page="/login.html"
                    authentication-failure-url="/login.html?fail"
                    default-target-url="/main.html"
                    always-use-default-target="true"/>
    <sec:logout logout-url="/logout.html"/>
    <sec:intercept-url pattern="/login.html*" access="ROLE_USER"/>
    <sec:intercept-url pattern="/a4j/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
    <sec:intercept-url pattern="/css/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
    <sec:intercept-url pattern="/img/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
</sec:http>

我上面的问题的根本原因是在 applicationContext.xml 中有以下条目:

<sec:intercept-url pattern="/**" access="ROLE_USER"/>

于 2015-08-04T01:09:17.183 回答