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

问题描述:

所以我想在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)

本页面无法正常工作

*计算机本地主机试图太多重定向

尝试删除Cookie

ERR_TOO_MANY_REDIRECTS

+0

你应当认真考虑使用类似的认证插件[弹簧安全(http://grails-plugins.github.io/grails-spring-security-core/)。 – doelleri

在您总是重新调整的login()行动的结尾无论如何,请回到login

redirect(action: "login") 

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

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!!!" 
} 
+0

是啊,我意识到我一直在重定向到同一页面,我忘了将重定向更改为index.gsp而不是login.gsp。 谢谢! –