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

时间:2018-04-10 13:57:05

标签: grails

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。

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

1 个答案:

答案 0 :(得分:1)

如果您将此报告为不良行为,我们在https://github.com/grails/grails-core/issues的GitHub问题跟踪器就是更好的选择。这已经在https://github.com/grails/grails-core/issues/10965报告了,看起来修复已经在3.3.5.BUILD-SNAPSHOT中验证并且看起来很好。

如果你只是问这是否是预期的行为,那就不是。