我有一个使用spring安全插件身份验证的grails应用程序。
到目前为止,我一直使用useToken=true
保护我的所有表单免受CSRF攻击,并使用withForm
阻止在控制器中对此进行验证,但我不知道如何在登录时执行此操作使用spring security插件的表单。
是否有可能在登录表单中使用useToken
,然后覆盖一些Spring安全类,以便能够在grails中使用withForm
?
如何保护登录免受CSRF攻击?
这些是我对登录的更改,以便能够使用useToken。
MyLoginController
def checkLogin(){
withForm {
redirect(uri: "/j_spring_security_check", params: params)
}.invalidToken{
message(error: "Double submit error")
}
}
GSP
<g:form action='checkLogin' method='POST' id='loginForm' autocomplete='off' useToken="true">
<input id="username" name="j_username" type="text">
<input id="password" name="j_password" type="password"
<button data-dismiss="modal" type="submit"</button>
</g:form>
这给我一个用户名和密码错误,不要将我重定向到我的登录后页面。
现在,这是我以前使用默认弹簧安全行为完美运行的代码。没有自定义登录控制器,这在gsp。
中<form action='${postUrl}' method='POST' id='loginForm' autocomplete='off'>