grails - grails域对象null检查不起作用-grails 2.3.7

标签 grails spring-security

我在grails应用程序上工作,在这里我为每个用户都有一个Profile域。查看和编辑用户个人资料有两种方法-

  • 用户单击名为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/

    相关文章:

    Grails - 如何实现不使用 id 列的外键关系?

    grails - 具有动态参数的Gorm finder(第2部分)?

    spring - Ldap 用户授权失败 - 未处理的 Spring 身份验证 "Access is denied"

    java - Spring Security中的自定义表达式

    java - 该页面没有正确重定向 Spring Security

    spring - 如何设置 Spring Security SecurityContextHolder 策略?

    grails - Grails JSON View -默认日期渲染

    image - Grails将参数传递给图像

    grails - 映射遗留表和多个 hasMany 关联

    java - 不同的端点看似随机地获得授权