我正在运行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
}
}
答案 0 :(得分:0)
试试这个:
def ctx = ServletContextHolder.servletContext.getAttribute(GrailsApplicationAttributes.APPLICATION_CONTEXT)
def springSecurityService = ctx. springSecurityService
def currentUser = springSecurityService.currentUser
现在你应该可以使用springSecurityService
了