升级到 JSF 2.2 和 RF 4.5.7 后刷新登录页面时出现控制台错误

Console errors when refreshing login page after upgrading to JSF 2.2 and RF 4.5.7

我最近将 Web 应用程序从 JSF 1.2 升级到 JSF 2.2,并将 RF 3.3.3 升级到 RF 4.5.7。我目前在加载第一个 login.html 页面时遇到控制台错误。这仅在首次加载页面或刷新(F5 或 shift F5)时发生。当我登录并再次注销时,我没有收到这些错误! URL 完全相同,例如主持人: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 在我看到控制台错误的时间和我没有看到的时间之间。

不好

我相信我已经应用了所有必要的更新,例如删除旧的 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: 在 google chrome:

上使用“网络”选项卡加载页面时拍摄的图像

不好

更新 2:

不好

好的,我找到了(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"/>