私がフォローしているチュートリアルの多くがこれを使用していることに気づいています:
def springSecurityService
現在ログインしているユーザーだけがレコードを取得したいので、次を使用します。
def user = params.id ? User.findByUserId(params.id) : User.get(springSecurityService.principal.id)
また、ブートストラップでユーザー名とパスワードを作成したいので、たとえば
def user = new User(
username: username,
password: springSecurityService.encodePassword("tops3kr17"),
enabled: true)
ただし、パスワードが作成されておらず、Spring Source Toolsがメソッド.principal.idまたは.encodePassword(STSで下線が引かれている)を検出せず、CTL + SPACEを押すときに大文字のSを指定してSpringSecurityServiceを使用したいと考えています(および.principal.idまたは.encodePasswordを完了しません)。
チュートリアルが古くなっているように見えるので、私は少し迷っています
では、現在サポートされているメソッドを使用して、説明したことをどのように行うことができますか?それとも私は本当に単純なものが欠けていますか?:)
class BootStrap {
def springSecurityService
def init = { servletContext ->
def demo = [
'jack' : [ fullName: 'Jack Demo Salesman'],
'jill' : [ fullName: 'Jill Demo Saleswoman']]
def now = new Date()
def random = new Random()
def userRole = SecRole.findByAuthority("ROLE_SALES") ?: new SecRole(authority: "ROLE_SALES").save()
def adminRole = SecRole.findByAuthority("ROLE_ADMIN") ?: new SecRole(authority: "ROLE_ADMIN").save()
def users = User.list() ?: []
if (!users) {
demo.each { username, password, userAttrs ->
def user = new User(
username: username,
password: springSecurityService.encodePassword('secret'),
enabled: true)
if (user.validate()) {
println "DEBUG: Creating user ${username}..."
println "DEBUG: and their password is ${password}"
user.save(flush:true)
SecUserSecRole.create user, userRole
users << user
}
else {
println("\n\n\nError in account bootstrap for ${username}!\n\n\n")
user.errors.each {err ->
println err
}
}