誰でも自分だけのロボットを作ることができます。ロボットの編集は、作成者または管理者のみが行う必要があります。
次のコードは完全に機能し、簡単でシンプルなソリューションです。
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()"]
]
さまざまな理由で機能しません。
Robot
Config.groovyでドメイン クラスを呼び出すことはできません。params.id
この場所では意味がない- Java の「または」(
||
) はここでは無効です。運が悪かったので他の方法を試しました。Groovyのドキュメントは私にはわかりません。
Config.groovyでそれを行うことは可能ですか? そうでない場合、正しい方法は<sec:access> ... </sec:access>
どういうわけか使用することでしょうか?