我在grails应用程序上工作,在这里我为每个用户都有一个Profile域。查看和编辑用户个人资料有两种方法-
因此,在第一种情况下,如果用户本人正在检查其个人资料,则在 Controller 端,我正在使用Spring安全方法“springSecurityService.currentUser”检查该用户。
在第二种情况下,如果管理员正在检查用户的个人资料,则将userInstance传递给 Controller 操作。
当我在第一种情况下使用它时会出现问题,即用户自己正在检查其个人资料。在这里,当我使用if / else条件检查userInstance参数的null时,userInstance通过null检查,即使它为null。当我在控制台上打印它时,它给了我一个空指针异常。
代码是-
def show(User userInstance){
println("Inside show action of profileController")
println("userInstance: " + userInstance) //Output- userInstance: null
if(userInstance != null){
println("userInstance: " + userInstance) //Output- userInstance: null
}else{
println("userInstance is null") //It never prints even though userInstance is null
userInstance = springSecurityService.currentUser
}
//More functionality to come
}
因此,基本上它是非常基本的东西,但是我无法弄清楚,为什么它不检查null而是将sill打印为null。
最佳答案
when I check for null of userInstance parameter using if/else condition, the userInstance passes null check even though it is null.
这意味着Groovy编译器中存在一个非常基本的错误,对此我表示怀疑。尝试以下方法:
def show(User userInstance){
userInstance = userInstance ?: springSecurityService.currentUser
}
大概当管理员正在查看用户的个人资料时,该用户的ID是否作为请求参数传递?如果是这样,该如何阻止知道(或猜测)另一个用户ID的恶意用户访问其个人资料?
关于grails - grails域对象null检查不起作用-grails 2.3.7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23776830/