我已阅读并将自定义身份验证提供程序的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
在考虑之后,我还决定删除所有拦截网址,认为这可能是因为那些无意义的重定向......但它也没有用。
答案 0 :(得分:0)
乍一看,您错过了<form-login>
部分中的配置参数,即authentication-failure-url
。
您可以在此指示Spring Security重定向失败的登录尝试。
尝试按如下方式添加它:
<form-login login-page="/login" <!--other configurations--> authentication-failure-url="/login?error=true" />.
当然,请注意管理自定义登录jsp中的error
参数。