1

我正在 Grails 中构建一个自定义身份验证过滤器类。它正在工作,但它让我感到困扰,我不知道它为什么会起作用。

在以下 Grails 请求过滤器中,“角色”方法在哪里/如何定义?它必须是 Grails 的 Nimble 插件的一部分,但我在我的过滤器类扩展的 NimbleFilterBase 中看不到它。

public class MySecurityFilters extends MyCustomExtensionOfNimbleFilterBase {
    def filters = {
        reports(controller: 'foo', action: 'bar') {
            before = {
                accessControl {
                    role('Administrator')
                }
            }
        }

另外,“accessControl”块到底是什么?这是 Grails 的内置部分,还是 Nimble 以某种方式提供的东西,或者只是我可以摆脱的随机范围机制?

谢谢!

4

2 回答 2

2

Nimble 使用 Shiro,这些是 Shiro 的功能。请参阅http://grails.org/plugin/shiro上的文档

accessControl 方法通过 ShiroGrailsPlugin 在 doWithDynamicMethods() 中连接到 MetaClass - 请参阅http://plugins.grails.org/grails-shiro/trunk/ShiroGrailsPlugin.groovy

角色方法定义在http://plugins.grails.org/grails-shiro/trunk/src/groovy/org/apache/shiro/grails/FilterAccessControlBuilder.groovy

于 2011-04-23T08:43:23.810 回答