我正在尝试为登录创建登录操作。我从数据库中获得了价值。但问题是,当我用字符串检查值时,它不能正常工作并且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]
答案 0 :(得分:1)
您正在使用.findAllBy
,因此您有一个用户列表,此列表中包含一个元素。因此,角色变量具有[admin]
值(请参阅提供的输出),它是一个角色列表。字符串列表,而不是字符串。
您将此列表与admin
作为字符串值进行比较。所以,这是正确的["admin"] != "admin"
只需使用findBy
,例如:
def user = Login.findByUsernameAndPassword(username, password)