0

私だけかもしれませんが、Shiro プラグインを使用して Grails アプリケーションの一部のページだけを保護する方法を理解するのに苦労しています。

これをセキュリティ フィルターで使用します。

クラスSecurityFilters {
  デフフィルター = {
    all(uri: "/**") {
      前= {
        // ダイレクト ビュー (デフォルトのメイン インデックス ページなど) を無視します。
        if (!controllerName) return true

        // 規約によるアクセス制御。
        アクセス制御 (auth:false)
      }
    }
  }
}

ブートストラップでユーザーを作成しました:

    def adminRole = 新しい役割 (名前: "管理者")
    adminRole.addToPermissions("secured1")
    adminRole.addToPermissions("secured2:作成、保存、編集、更新")
    adminRole.save()

    def user = new User(username: "admin", passwordHash: new Sha512Hash("***").toHex())
    user.addToRoles Role.findByName('管理者')
    user.save()

そしてそれは動作します。問題は、すべてのコントローラー/アクションも保護することです。

SecurityFilter で保護したいアクションを指定することはできず、アクセス許可でのみ指定できることを望んでいました..しかし、これは可能ですか?

4

1 に答える 1

1

静的プロパティ 'filter' を使用すると、複数のフィルタリング パターンを定義できます。「uri」パラメータまたは「controller」パラメータを使用できます。「コントローラー」を使用する場合は、「アクション」パラメーターも追加できます。これらの各パラメーターは正規表現を取るため、次のようなことができます。

admin(uri:"/admin/**")
...
browseStore(controller:"store", action:"(show|list)")
...
shopStore(controller:"store", action:"*")
...

詳細については、 http://www.grails.org/Filtersを参照してください。

于 2010-02-05T14:24:10.353 に答える