0

我正在尝试为登录创建登录操作。我正在从数据库中获取价值。但问题是,当我用字符串检查值时,它不能正常工作,else 部分执行并在浏览器中显示消息。我正在使用 grails 2.1.0。尽管我认为这是一个非常正常的问题,但我不知道该怎么做。谁能帮我解决这个问题?下面是我的代码:

def loginAction = {
    def username = params?.username
    def password = params?.password
    def user = Login.findAllByUsernameAndPassword(username, password)
    def status = user.status
    def role = user.role
    println(">>>>>>>>>>>>>>>>>>>>>>>> "+role);

    if(role == 'admin'){
        render "Admin Login"
    }else if(role == "teacher"){
        render "Teacher's Login"
    }else if(role == "student"){
        render "student login"
    }else{
        flash.message = message(code: "Log-In failed, Please try again !!!")
        redirect(controller:"login",action:"login")
    }
}

请注意, println 有效并给出以下输出:

>>>>>>>>>>>>>>>>>>>>>>>> [admin]
4

1 回答 1

1

您正在使用.findAllBy,因此您有一个用户列表,该列表中有一个元素。结果,角色变量具有[admin]值(请参阅提供的输出),它是角色列表。字符串列表,而不是字符串。

您正在将此列表与admin字符串值进行比较。所以,没错["admin"] != "admin"

只需使用findBy,例如:

def user = Login.findByUsernameAndPassword(username, password)
于 2013-05-09T09:49:17.663 回答