0

私がフォローしているチュートリアルの多くがこれを使用していることに気づいています:

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
                }
            }
4

1 に答える 1

0

SpringSecurityService の注入されたインスタンスを使用するのが正しいアプローチです。

def springSecurityService

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

IDE が認識しない場合は、IDE に問題があります。

于 2012-11-15T22:22:32.213 に答える