0

誰でも自分だけのロボットを作ることができます。ロボットの編集は、作成者または管理者のみが行う必要があります。

次のコードは完全に機能し、簡単でシンプルなソリューションです。

import org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils

class RobotController {

    def springSecurityService

    def edit() {

        if (Robot.get(params.id).usuario.username == springSecurityService.authentication.name
         || SpringSecurityUtils.ifAnyGranted("ROL_ADMIN,ROL_SUPERADMIN"))               
            println "editing allowed"
        else
            println "editing denied"

    }
}

しかし、先生はConfig.groovy を使用して Web を保護するように勧めました。次のコードは機能しませ:

grails.plugins.springsecurity.interceptUrlMap = [
    '/index.gsp': ["isAuthenticated()"],
    '/robot/edit/**': ["Robot.get(params.id).usuario.username == springSecurityService.authentication.name
                        || hasAnyRole('ROL_ADMIN','ROL_SUPERADMIN')"],
    '/robot/**': ["isAuthenticated()"]
]

さまざまな理由で機能しません。

  1. RobotConfig.groovyでドメイン クラスを呼び出すことはできません。
  2. params.idこの場所では意味がない
  3. Java の「または」( ||) はここでは無効です。運が悪かったので他の方法を試しました。Groovyのドキュメントは私にはわかりません。

Config.groovyでそれを行うことは可能ですか? そうでない場合、正しい方法は<sec:access> ... </sec:access>どういうわけか使用することでしょうか?

4

1 に答える 1