关于标记"access-denied-page"的弹簧安全警告cvc-complex-type.3.2.2:不允许出现属性"access-denied-page"

Jer*_*ome 2 security spring warnings http

我的想法是eclipse-luna.系统是Windows 7旗舰版.我将带有副本*.jar的spring security用于我的项目并"添加到构建路径".请看有关警告的图片

    <security:http auto-config="true" use-expressions="true" access-denied-page="/user/login/init">

    <security:intercept-url pattern="/manage/**" access="hasRole('ROLE_ADMIN')" />
    <security:intercept-url pattern="/user/index**" access="hasRole('ROLE_USER')" />

    <security:form-login login-page="/user/login/init"
        authentication-failure-url="/user/login/init"
        authentication-success-handler-ref="successHandler"
        authentication-failure-handler-ref="failureHandler"
        always-use-default-target='true' />

    <security:logout delete-cookies="JSESSIONID" invalidate-session="true" success-handler-ref="urlLogoutSuccessHandler" />

    <security:remember-me key="health" user-service-ref='userDetailsServiceImpl'/>
</security:http>
Run Code Online (Sandbox Code Playgroud)

警告是"cvc-complex-type.3.2.2:属性'access-denied-page'不允许出现在元素'security:http'中."

上周对此没有任何警告,我对*.jar或我的项目没有任何改变.但现在警告?我无法理解.它可以很好地处理警告.谢谢你的帮助 .

小智 6

您可以尝试从Spring Security 3.x迁移到Spring Security 4.x.

删除了XML属性http @ access-denied-page,转而使用access-denied-handler @ error-page.这意味着如果您有这样的事情:

<http ... access-denied-page="/denied">
...
</http>
Run Code Online (Sandbox Code Playgroud)

它需要替换为:

<http ...>
    <access-denied-handler error-page="/denied"/>
</http>
Run Code Online (Sandbox Code Playgroud)

更多详情请点击这里,希望它适合您.


Jer*_*ome 3

因为我使用 spring security 3,bug access-denied-page 是 spring security 2 。所以它会在我的IDE中发出警告。我们可以使用 access-denied-handler 替换 access-denied-page

<security:access-denied-handler error-page="/user/login/init"/>
Run Code Online (Sandbox Code Playgroud)