Grails和Spring Security:如何将用户引入控制器?

时间:2014-01-28 09:29:14

标签: spring grails spring-security

我看了thisthisthis但未解决我的问题。

这是我的错误:
无法在null对象上调用方法getCurrentUser()。 Stacktrace如下:
消息:无法在null对象上调用方法getCurrentUser()

我的代码:

import org.springframework.dao.DataIntegrityViolationException
import grails.plugin.springsecurity.annotation.Secured;

@Secured('ROLE_SYSTEMADMIN')
class InstanceController {

...

def save() {
    def instanceInstance = new Instance(params)
def springSecurityService

println("user is"+springSecurityService.getCurrentUser());
...

我用:

  • GGTS 3.4.0。
  • compile':spring-security-core:2.0-RC2'

我已经登录了。我确定。 谢谢你的回复。

拉​​赛尔

2 个答案:

答案 0 :(得分:4)

您将springSecurityService定义为方法变量。您应该将其定义为实例变量:

class InstanceController {
  def springSecurityService
  def save() {
    def instanceInstance = new Instance(params)
    println("user is"+springSecurityService.getCurrentUser());
    ..
  }
}

现在spring可以在创建控制器后注入springSecurityService

答案 1 :(得分:0)

该服务未被注入,因为您没有声明控制器的全局属性。从你的save方法声明它,然后调用currentuser属性,这应该工作。