简单登录页面导致过多的重定向错误

时间:2017-08-10 19:53:16

标签: grails

所以我试图在Grails中创建一个简单的登录页面,并且我的浏览器上出现了太多的重定向错误。我还没有将登录详细信息连接到数据库,您应该使用“admin”和“password”登录,但无论是否输入正确或不正确的用户名和密码,我都会收到“太多重定向错误”在我的浏览器中。

删除Cookie的建议操作无效!

User.groovy

package loginmysql

class User {

    String userName
    String password
    String fullName

    String toString(){
        fullName
    }

    static constraints = {
        userName (unique:true)
        password(password:true)
        fullName()
    }
}

UserController.groovy

package loginmysql

class UserController {

    def index() { }

    def login() {
        if (params.username == "admin" && params.password == "password"){
            flash.message="login succeded!!!"
            session.user="admin"    // keep info on who connected
        }else{
            flash.message="login failed!!!"
        }
        redirect(action: "login")   // return to index page again and display login message
    }

    def logout() {
        session.user = null     // no user logged in
        redirect(action: "login")   // go to index page again
    }
}

index.gsp中

<%@ page import="loginmysql.User" %>
<!DOCTYPE html>
<html>

<head>
    <meta name="layout" charset="utf-8" content="main"/>
    <title></title>
    <style type="text/css">
    label{
        float: left;
        width: 65px;
    }
    </style>
</head>
<body>
<g:if test="${flash.message}"
<div class="message">
    ${flash.message}
</div>
</g:if>
<g:if test="${session.user}">
    <br/>
    Logged as : ${session.user}  |   <g:link action="logout">Logout</g:link>
</g:if>
<g:else>
    <g:form action="login" style="padding-left:200px">
        <div style="width: 220px">
            <label>Username:</label> <input type="text" name="username"/>
            <label>Password:</label> <input type="password" name="password"/>
            <label>&nbsp;</label> <input type="submit" value="login"/>
        </div>
    </g:form>
</g:else>
</body>

</html>

错误(在Chrome中)

  

此页面无效

     

中央计算机localhost尝试了太多重定向

     

尝试删除您的Cookie

     

ERR_TOO_MANY_REDIRECTS

1 个答案:

答案 0 :(得分:2)

login()行动结束时,无论如何,您都会重定向回login

redirect(action: "login")

如果你得到一个成功的&#34;登录时,您应该重定向到其他地方以防止无限重定向循环。

if (params.username == "admin" && params.password == "password") {
    flash.message="login succeded!!!"
    session.user="admin"    // keep info on who connected
    redirect(action: "index")
} else {
    flash.message="login failed!!!"
}