【发布时间】:2018-04-10 13:57:05
【问题描述】:
Grails 版本:3.3.4, Groovy 版本:2.4.14, JVM版本:1.8.0_161, 库本图 14.04
我写了一个简单的认证表单(最后会通过https POST):
<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: '/' - 我在浏览器的 URL 字段中看到名称和密码:
http://localhost:8080/?j_username=test&j_password=TEST
我可以发誓这在 grails 3 的第一个版本中没有发生...我不记得什么时候...
最好不要在 URL 中将 POST 密码作为 GET 参数发回。
如果我渲染一个特定的视图而不是重定向它就不会发生。
【问题讨论】:
-
这是一个已知错误,已在 3.3.5 中修复 - 要么降级到 3.3.2,要么等待 3.3.5(应该是本周)github.com/grails/grails-core/pull/10974
-
埃里希,我不知道。谢谢。这不是紧急情况。等待 3.3.5 听起来不错。如果我要完成,将有 5.5.5。所以我会时不时地问一些奇怪的事情;-)
标签: grails