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 メソッドは doWithDynamicMethods() の ShiroGrailsPlugin によって MetaClass に接続されます - http://plugins.grails.org/grails-shiro/trunk/ShiroGrailsPlugin.groovyを参照してください

role メソッドはhttp://plugins.grails.org/grails-shiro/trunk/src/groovy/org/apache/shiro/grails/FilterAccessControlBuilder.groovyで定義されています

于 2011-04-23T08:43:23.810 に答える
0

上記のリンクは無効になりました。

これらは現在のものです:

https://github.com/pledbrook/grails-shiro/blob/master/ShiroGrailsPlugin.groovy#L221

https://github.com/pledbrook/grails-shiro/blob/master/src/groovy/org/apache/shiro/grails/FilterAccessControlBuilder.groovy#L39

于 2012-11-05T15:38:19.223 に答える