Grails2.1.1和Spring安全核心插件

Grails2.1.1和Spring安全核心插件,grails,spring-security,Grails,Spring Security,我注意到很多我下面的教程都使用了这个: def springSecurityService 由于我只想通过当前登录用户获取记录,因此我使用: def user = params.id ? User.findByUserId(params.id) : User.get(springSecurityService.principal.id) 在我的引导程序中,我想创建一个用户名和密码,例如 def user=新用户( 用户名:用户名, 密码:springSecurityService.encod

我注意到很多我下面的教程都使用了这个:

def springSecurityService
由于我只想通过当前登录用户获取记录,因此我使用:

def user = params.id ? User.findByUserId(params.id) : User.get(springSecurityService.principal.id)
在我的引导程序中,我想创建一个用户名和密码,例如

def user=新用户(
用户名:用户名,
密码:springSecurityService.encodePassword(“tops3kr17”),
已启用:true)

但是我注意到密码没有被创建,Spring源代码工具找不到.principal.id或.encodePassword方法(它们在STS中保持下划线),并希望在点击CTL+空格时使用带大写字母S的SpringSecurityService(并且没有完成.principal.id或.encodePassword)

所以我有点不知所措,因为教程似乎已经过时了

那么,我如何使用当前支持的方法来实现我所描述的呢?还是我遗漏了一些非常简单的东西?:)

类引导{
def springSecurityService
def init={servletContext->
def演示=[
'杰克':[全名:'杰克演示推销员'],
'吉尔':[全名:'吉尔示范销售员']]
def now=新日期()
def random=new random()
def userRole=SecRole.findbyaauthority(“角色销售”)?:新的SecRole(权限:“角色销售”).save()
def adminRole=SecRole.findbyaauthority(“ROLE\u ADMIN”)?:新的SecRole(authority:“ROLE\u ADMIN”).save()
def users=User.list()?:[]
如果(!用户){
demo.each{用户名、密码、用户属性->
def user=新用户(
用户名:用户名,
密码:springSecurityService.encodePassword('secret'),
启用:真)
if(user.validate()){
println“调试:创建用户${username}…”
println“DEBUG:其密码为${password}”
user.save(刷新:true)
SecUserSecRole.create用户,userRole
使用者
打印错误
}
}

使用注入的SpringSecurityService实例是正确的方法

def springSecurityService

def foo() {
   springSecurityService.principal
   springSecurityService.encodePassword('fdsfads')
   ....
}

如果IDE无法识别它,则表明您的IDE存在问题。

解决了问题。我将代码放在了我的原始帖子中。至少我认为我能识别。:p似乎一个问题得到了解决,另一个问题得到了解决。:)
def springSecurityService

def foo() {
   springSecurityService.principal
   springSecurityService.encodePassword('fdsfads')
   ....
}