具有自定义登录的Spring Security自定义身份验证提供程序不会将错误参数放入请求

时间:2016-02-28 14:02:36

标签: java spring spring-mvc authentication spring-security

我已阅读并将自定义身份验证提供程序的Creating a Custom Login教程应用于我的项目。

据我所知,spring安全性通过在url中添加一个参数来处理登录错误,例如“login?error = blabla”。

但在我的情况下,无论用户输入的内容除了真实凭据外,都不会显示任何请求参数。但正常登录(意味着真正的登录)工作正常。

有什么我错过的吗?

CustomAuthenticationProviderImpl.java

<global-method-security pre-post-annotations="enabled" />

    <http auto-config="true">

        <intercept-url pattern="/resources/**"  access="permitAll" />
        <intercept-url pattern="/login"  access="permitAll" />
        <intercept-url pattern="/access-denied"  access="permitAll" />
        <intercept-url pattern="/admin**" access="hasRole('ADMIN')" />
        <intercept-url pattern="/**" access="hasRole('USER')" />

        <form-login login-page="/login"  default-target-url="/main" always-use-default-target="true"/>

        <logout logout-url="/logout" logout-success-url="/"/>

        <headers>
            <frame-options policy="SAMEORIGIN"/>
        </headers>

        <session-management>
            <concurrency-control expired-url="/login"  />
        </session-management>
    </http>

    <authentication-manager alias="authenticationManager">
        <authentication-provider ref="customAuthenticationProviderImpl" />
    </authentication-manager>

弹簧安全-config.xml中

tl1

在考虑之后,我还决定删除所有拦截网址,认为这可能是因为那些无意义的重定向......但它也没有用。

1 个答案:

答案 0 :(得分:0)

乍一看,您错过了<form-login>部分中的配置参数,即authentication-failure-url。 您可以在此指示Spring Security重定向失败的登录尝试。 尝试按如下方式添加它:

<form-login login-page="/login" <!--other configurations--> authentication-failure-url="/login?error=true" />.

当然,请注意管理自定义登录jsp中的error参数。