特定の機能を提供するプラグインを開発しています。プラグインは「すべてを備えています」: 完全な垂直スライス (サービス、コントローラー、ドメインクラス、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
セキュリティプラグイン全体がなくても、コントローラーでを使用できるようになりました。メイン アプリにインストールすると、セキュリティ プラグインによって自動的に選択されます。