Ale*_*lex 3 grails scaffolding
我有一个已static scaffold = true定义的控制器,以及一些自定义操作.
我想确保只有登录用户和ADMIN类型(Enum我们域中的某些值)才能访问它.为了实现这一点,我实现了一个映射到/admin/**URI空间的grails过滤器,当然还有当脚手架不在那里时有问题的域/控制器的URI.我为show/edit/create操作添加了自定义的,命名的URL映射(直接工作并委托给scaffold层),但我最终得到了两个专门用于此目的的URI上下文.
我希望能够对脚手架控制器说"使用此URI作为所有URI的前缀"并完成它,但是通常搜索文档和Web并没有证明非常有用.
有任何想法吗?
脚手架控制器使用标准taglib调用生成所有URL,这些调用对URL映射很敏感.因此,如果你有正确的URL映射,那么它应该工作.如果你有一个MyDomainController你希望被映射到/admin那时你需要的东西
class UrlMappings {
static mappings = {
"/$controller/$action?/$id?" {
constraints {
controller(validator:{
// make sure this mapping doesn't apply to the MyDomainController,
// so it will only be accessible via the protected /admin URL
return it != "myDomain"
})
}
}
// special rule for the MyDomainController
"/admin/myDomain/$action?/$id?"(controller:"myDomain")
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在URL映射上使用任何常用的Grails约束类型,因此您可以通过白名单进行限制
controller(inList:['foo', 'bar'])
Run Code Online (Sandbox Code Playgroud)
或通过正则表达
// exclude all controllers whose name starts "sec", e.g. secUser, secRole, ...
controller(matches:/(?!sec).*/)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
709 次 |
| 最近记录: |