无法在空对象上调用方法 isLoggedIn()

Cannot invoke method isLoggedIn() on null object

我实际上有两个 spring 与安全相关的问题。

1,我的控制器中有以下代码用于更改密码

def changePassword() {

        if (!securityService.isLoggedIn()) {
            redirect(action: 'auth', controller: 'login')
            return
        }
}

当我在确认新密码后点击保存按钮时,它生成以下错误

NullPointerException occurred when processing request: [POST] 
Cannot invoke method isLoggedIn() on null object.

现在我的问题是我哪里错了?

2,我的第二个问题也是类似的,我试图让当前用户这样

User currentUser = securityService.getCurrentUser()
            currentUser.gender = gender
            currentUser.save()

但仍然产生相同的错误
无法在空对象上调用方法 getCurrentUser()

注意:- 我正在使用 grails 2.4.4 和 spring security 2.0-RC4。

更新:- 我确实在我的 controller/service

中包含了 def securityService

SpringSecurityService 以这种方式自动连接到控制器:

   def springSecurityService

并且使用 Groovy,您可以调用 springSecurityService.currentUser 而不是 getCurrentUser()

只需在您的控制器中添加 'def springSecurityService'

Class UserController{

  def springSecurityService

  def changePassword(){
      //You can access springSecurityService now
    if (!springSecurityService.isLoggedIn()) {
        redirect(action: 'auth', controller: 'login')
        return
    }
  }
}