重定向到 URI 发回浏览器 URL 栏中添加的 POSTed 参数

Redirect to URI sends back the POSTed params added in browser's URL bar

Grails 版本:3.3.4, Groovy版本:2.4.14, JVM 版本:1.8.0_161, Ubuntu 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 后:'/' - 我在浏览器的 URL 字段中看到名称和密码:

http://localhost:8080/?j_username=test&j_password=TEST

我可以发誓这在第一个版本的 grails 3 中没有发生...我不记得是什么时候...

最好不要在 URL 中将 POSTed 密码作为 GET 参数发回。

如果我渲染特定视图而不是重定向它不会发生。

如果您将此报告为不良行为,我们的 GitHub 问题跟踪器 https://github.com/grails/grails-core/issues is a better place to do that. This has already been reported though at https://github.com/grails/grails-core/issues/10965 看起来修复已在 3.3.5.BUILD-SNAPSHOT 中得到验证并且看起来不错.

如果您只是想问这是否是预期行为,那不是。