0

我正在运行 Grails 2.2.1。我有一个 Grails 服务,它充当气氛处理程序。
请参阅此链接:https ://bitbucket.org/bgoetzmann/grails-atmosphere-plugin/wiki/Home

我正在尝试以简单的方式在其中使用 spring 安全服务,即通过def springSecurityService. 但是当服务命中处理程序时,
springSecurityService.getCurrentUser()返回 null。
用户已登录,我可以让他进入我的控制器。我认为该服务没有以某种方式注入。
经过一些研究,我遇到了这个问题
Injecting service into Grails Atmosphere Handler class
但两个答案都过时了......
请帮忙!


编辑:我的服务是这样的:

AtmosphereRequest req = r.getRequest();
 if (req.getMethod().equalsIgnoreCase("GET")) {
     log.info "got get, and suspending."
     r.suspend();
     } else if (req.getMethod().equalsIgnoreCase("POST")) {
         def data = req.getReader().readLine().trim()
         log.info "got some data:\n $data"
         if (data == "GET_NEARBY"){
             log.info "finding nearby..."
             def user = springSecurityService.getCurrentUser()
             log.info "user is $user" //USER IS NULL HERE

              //...some logic
         }
     }
4

1 回答 1

0

尝试这个:

def ctx = ServletContextHolder.servletContext.getAttribute(GrailsApplicationAttributes.APPLICATION_CONTEXT)
def springSecurityService = ctx. springSecurityService

    def currentUser = springSecurityService.currentUser

现在你应该可以使用 springSecurityService

于 2013-06-25T19:20:21.353 回答