grails - 在grails Controller 中将字符串与检索到的值进行比较

标签 grails grails-2.0

我正在尝试为登录创建登录操作。我从数据库中获取值(value)。但是问题是,当我用字符串检查值时,它不能正常工作,其他部分被执行并在浏览器中显示消息。我正在使用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]

最佳答案

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

您正在将该列表与admin作为字符串值进行比较。所以,正确的["admin"] != "admin"
只需使用findBy即可,例如:

def user = Login.findByUsernameAndPassword(username, password)

关于grails - 在grails Controller 中将字符串与检索到的值进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16458708/

相关文章:

grails - Grails findById(null)返回 “random”结果

grails - 在 grails 版本 3.3.11 中获取验证错误,但在 grails 2.0.1 中没有

grails - 按值而不是按引用将对象属性复制到映射

grails - 如何将 Grails 2.1 迁移到 Grails 2.3 应用程序?

Grails + GORM : What is the default equals() implementation in GORM?

grails - 如何在超过2个域中使用Grails可搜索插件

database - Grails 连接池 - 连接没有关闭?

grails - 无法使用 Grails 外部属性文件配置 log4j

mysql - 如何在带有 Gorm 的 Grails 中使用 GROUP_CONCAT

hibernate - Grails数据源 “Cannot add or update a child row: a foreign key constraint fails”