当LoginController的动作authfail中的身份验证失败时,有没有办法在spring security core grails插件中检索用户输入的密码?
def authfail = {
def msg = ''
// I can get the username as below
def username = session[UsernamePasswordAuthenticationFilter.SPRING_SECURITY_LAST_USERNAME_KEY]
// There is UsernamePasswordAuthenticationFilter.SPRING_SECURITY_FORM_PASSWORD_KEY but the value is null when access here as below
def attemptedPassword = session[UsernamePasswordAuthenticationFilter.SPRING_SECURITY_FORM_PASSWORD_KEY]
.
.
.
}
我需要知道验证失败时输入的密码。
答案 0 :(得分:1)
可以,但您必须在提交登录表单之前将密码存储在会话中。将自定义按钮添加到您的登录表单并隐藏提交按钮:
<form action="/j_spring_security_check">
...
<button onclick="javascript:store()" type="button">Login</button>
<input class="invisible" id="loginButton" type="submit">
</form>
您需要在javascript中编写store()
函数。以下是如何实现这一目标的示例:FIDDLE(借鉴here)。显然,在这个函数中你必须附上表单提交(使用jQuery):$('#loginButton').click()
验证失败后,您必须检索存储的密码。