Grails版本:3.3.4, Groovy版本:2.4.14, JVM版本:1.8.0_161, Kubuntu 14.04
我写了一个简单的身份验证表单(最后它将通过https发布):
<form action='auth' method='POST' id='loginForm' class='cssform' autocomplete='off'>
<p>
<label for='j_username'>Login ID</label>
<input type='text' class='text_' name='j_username' id='j_username' />
</p>
<p>
<label for='j_password'>Password</label>
<input type='password' class='text_' name='j_password' id='j_password' />
</p>
<p>
<input type='submit' value='Login' />
</p>
控制器是:
class LoginController {
def index() {
if (session.user?.name == 'test') {
render view: '/login/youarealreadyin'
}
else {
render view: '/login/auth'
}
}
def auth() {
def loginName = params.j_username?.trim()
def pass = params.j_password?.trim()
if (loginName == 'test' && pass == 'TEST' ) {
session.user = [name: loginName]
redirect uri: '/'
}
else {
render view: '/login/denied'
}
}
}
正确登录后,重定向到uri:&#39; /&#39; - 我在浏览器的URL字段中看到了名称和密码:
http://localhost:8080/?j_username=test&j_password=TEST
我可以发誓,第一版中的grails 3没有发生这种情况......我不记得什么时候......
很高兴,不要将发布的密码作为GET参数发送回URL。
如果我渲染特定视图而不是重定向它就不会发生。
答案 0 :(得分:1)
如果您将此报告为不良行为,我们在https://github.com/grails/grails-core/issues的GitHub问题跟踪器就是更好的选择。这已经在https://github.com/grails/grails-core/issues/10965报告了,看起来修复已经在3.3.5.BUILD-SNAPSHOT中验证并且看起来很好。
如果你只是问这是否是预期的行为,那就不是。