gpt4 book ai didi

grails - 如何将编辑限制为使用Grails创建的用户

转载 作者:行者123 更新时间:2023-12-02 15:10:12 25 4
gpt4 key购买 nike

任何用户都可以创建自己的机器人。只能由创建者或管理员编辑机器人。

下一个代码可以完美地工作,它是一个简单易用的解决方案:

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 保护网络 。下一个代码不起作用:
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()"]
]

由于不同的原因,它不起作用:
  • 无法在Config.groovy中调用域类Robot
  • params.id在这个地方没有意义
  • Java“或”(||)在这里无效。我没有运气就尝试了其他方法。 Groovy documentation对我来说不清楚。

  • 可以在Config.groovy中做到吗?如果没有,正确的方法将以某种方式使用 <sec:access> ... </sec:access>

    最佳答案

    我不认为您可以使用普通的Spring Security核心来做这种事情。

    您的老师是对的,您可能不应该以即席方式实现安全性,但是您不一定必须在Config.groovy中实现它-这有点限制。

    您可能想使用Spring Security ACL plugin,它添加了更多域类,并允许您使用更精细的细节来设置访问控制。

    checkout the official docs。您可能需要花一些时间来学习它,但是它比推出您自己的ACL机制要好得多。

    关于grails - 如何将编辑限制为使用Grails创建的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17913165/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com