我正在尝试将当前用户放在Grails 3.0.3应用程序中的控制器中。 我使用this repo作为我的安全设置的基础 - 安全性基于GORM。我在build.gradle中使用以下行来包含Spring Security Framework:
compile "org.springframework.boot:spring-boot-starter-security"
但是当我尝试注入springSecurityService时,就像在我的控制器中的其他SO线程(例如参见:this one)中所推荐的那样,我只得到一个null对象。它不是应该发起的。
class RestapiController {
def springSecurityService
def currentUser(){
def user = springSecurityService.currentUser
render user
}
}
如何将springSecurityService注入Grails 3.0.3中的控制器?
更新: 最后,我使用以下行来获取当前用户:
SecurityContextHolder.context.authentication.name
答案 0 :(得分:4)
springSecurityService
不属于Spring Security,它位于Grails spring-security-core插件中。 Spring Security没有“当前用户”的概念。您可以访问当前的Authentication
并获取用户名,密码,已启用等,但框架中没有任何内容可以让您回到用于填充身份验证的源对象(在Grails + spring-security中) -core这通常是User
域类实例) - 必须在您的应用程序代码中完成。
本周末,我发布了该插件的初始版本,该版本适用于Grails 3 3.0.0.M1版本。文档是here。文档中有一个简短的教程可以帮助您入门,您也可以查看this sample app using the plugin in Grails 3。