【问题标题】:Null when injecting SpringSecurityService into Filter in Grails将 SpringSecurityService 注入 Grails 中的过滤器时为空
【发布时间】:2012-12-03 14:14:35
【问题描述】:

我正在尝试在过滤器中使用 SpringSecurityService 来获取当前登录的用户。问题是我得到了 null 并且无法获取当前用户。

class ApplicationFilters {

   def springSecurityService

   def filters = {
      all(controller:'*', action:'*') {

         after = { Map model ->

            def userName=springSecurityService.currentUser
         }
      }
   }
}

我也尝试从过滤器中获取参数映射,但我也得到了空值。我该怎么做才能解决这个问题?

谢谢,

【问题讨论】:

  • 我注意到在我的服务中,依赖注入在动态重新加载代码时不起作用——我需要终止 Grails 进程并重新启动它。我得到了类似的我无法弄清楚的 NPE。也许对你来说也一样?
  • 尝试从代码中删除Map model ->。除此之外,我的代码完全相同。
  • @JasonNichols 我可以确认这一点。似乎依赖注入不适用于动态重新加载代码。

标签: grails


【解决方案1】:

不知道你是否已经解决了这个问题,但你绝对可以通过引用注入的applicationContext 来在*Filters 类中调用你的Service,如下所示:

class TestFilters {
  def filters = {
    all(controller:'*', action:'*') {
        before = {
            applicationContext.testService.serviceMethod()
        }
        after = { Map model ->

        }
        afterView = { Exception e ->

        }
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-10
    • 2015-12-08
    • 2015-11-30
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 2012-01-30
    相关资源
    最近更新 更多