Spring Notform表单登录未标识

时间:2014-05-07 17:49:20

标签: java spring security spring-security

我必须将应用程序从Spring Security 2迁移到3.2并且我完全丢失了,我从未使用过Spring安全性:(

我在spring-security.xml上修改了一些配置:

<http pattern="/ordreminderform.jsp" security="none" />
<http pattern="/passwordreminder.jsp" security="none" />
<http pattern="/getUser.jsp" security="none" />
<http pattern="/csra2.css" security="none" />
<http auto-config="true" access-denied-page="/accessDenied.jsp">
    <intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY" />
    <intercept-url pattern="/index.jsp"
        access="ROLE_USER,ROLE_ADMIN,ROLE_B1,ROLE_B2,ROLE_B3" />
    <intercept-url pattern="/Users.do" access="ROLE_ADMIN" />
    <intercept-url pattern="/Project.do"
        access="ROLE_USER,ROLE_ADMIN,ROLE_B1,ROLE_B2,ROLE_B3" />
    <intercept-url pattern="/Csra.do"
        access="ROLE_USER,ROLE_ADMIN,ROLE_B1,ROLE_B2,ROLE_B3" />
    <intercept-url pattern="/About.do"
        access="ROLE_USER,ROLE_ADMIN,ROLE_B1,ROLE_B2,ROLE_B3" />

    <session-management session-fixation-protection="newSession">
        <concurrency-control max-sessions="1"
            error-if-maximum-exceeded="false" />
    </session-management>

    <form-login login-page="/login.jsp"
        authentication-failure-url="/login.jsp?login_error=true"
        username-parameter="username" password-parameter="password"
        default-target-url="/index.jsp" always-use-default-target="true" />

</http>

<http>
    <intercept-url pattern="/usuarios/**"
        access="ROLE_USER,ROLE_ADMIN,ROLE_B1,ROLE_B2,ROLE_B3" />
    <intercept-url pattern="/admin/**" access="ROLE_ADMIN" />
    <!--<intercept-url pattern="/**" -->
    <!-- access="ROLE_USER,ROLE_ADMIN,ROLE_B1,ROLE_B2,ROLE_B3" /> -->
</http>

<http pattern="/imagens/**" security="none" />
<http pattern="/js/**" security="none" />
<http pattern="/css/**" security="none" />
<http pattern="/fonts/**" security="none" />
<http>
    <intercept-url pattern="/**"
        access="ROLE_USER,ROLE_ADMIN,ROLE_B1,ROLE_B2,ROLE_B3" />
</http>

当我尝试部署它时,它会抛出:

                     org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration      problem:No AuthenticationEntryPoint could be established. Please make sure you have a login mechanism configured through the namespace (such as form-login) or specify a custom AuthenticationEntryPoint with the 'entry-point-ref' attribute |Offending resource: class path resource [spring-security-config.xml]

这很奇怪,因为我确实有表格登录! .xml是一团糟,我试图让它变得更好。我使用Spring * 3.1.0和Spring Security 3.2.3

谢谢!

1 个答案:

答案 0 :(得分:3)

您有三个<http>块正在创建三个单独的安全过滤器链(即,您没有使用security='none'来绕过特定URL的安全性)。

这些都没有&#34;模式&#34;属性,这意味着它们都将被配置为处理所有请求,这是没有意义的。这些块中的第二个和第三个没有配置身份验证方法。这些中的任何一个都会导致您获得的错误。 form-login仅适用于包含它的http元素。

只需使用一个<http>元素即可包含您要应用的所有intercept-url个配置,除非您特别希望针对不同的网址模式使用不同的安全配置。

另请查看this question and answer