3

特定の機能を提供するプラグインを開発しています。プラグインは「すべてを備えています」: 完全な垂直スライス (サービス、コントローラー、ドメインクラス、GSP)。プラグイン レベルでは、セキュリティは使用されません。

次に、プラグインをメイン アプリに統合し、次のようなセキュリティ ルールを適用します@Secured(['ROLE_SUPER'])

私が今やっている方法はあまりエレガントではありません:

@Secured(['ROLE_SUPER'])
class SomeController extends SomePluginController {}

このようなゼロ値コードの質量は、コントローラの数とともに増加します。

ここで何を改善できますか?

ティア

更新:grails.plugin.springsecurity.controllerAnnotations.staticRulesマップが機能しません。

TaskController と index-action を内部に持つプラグイン AggregationPlugin があります。

私はそれを入れようとしました:

  grails.plugin.springsecurity.controllerAnnotations.staticRules = [
    '/task/**': ['ROLE_SUPER'],
    '/aggregation/**': ['ROLE_SUPER'],
    '/plugins/aggregation-0.1/**': ['ROLE_SUPER'],
  ]

しかし、匿名でページにアクセスすることはできます。

私は使用Grails 1.3.7していますspring-security-core 1.2.7.2

更新#2:

そのため、いくつかの試行の後、最もエレガントなソリューションを見つけました。セキュリティを適用するプラグインが多数ある場合、セットアップで何らかの理由で機能せず、非常に大きくなる可能性がある staticRules の代わりに、プラグインに依存関係を追加しました。

compile( 'org.springframework.security:spring-security-core:3.0.7.RELEASE' )

@Securedセキュリティプラグイン全体がなくても、コントローラーでを使用できるようになりました。メイン アプリにインストールすると、セキュリティ プラグインによって自動的に選択されます。

4

1 に答える 1

2

プラグイン コントローラーの構成を次の場所に配置できますConfig.groovy

grails.plugins.springsecurity.controllerAnnotations.staticRules = [
         '/somePlugin/': ['ROLE_SUPER']
]

公式ドキュメントを確認し、セクションcontrollerAnnotations.staticRulesまでスクロールします。

于 2013-10-22T11:04:06.700 に答える