私は Grails を使用するかなり大規模な Web アプリケーションに取り組んでおり、ロール セキュリティの使用を実装しようとしています。システムがセットアップされたとき、grails は基本的に CAS 認証済みユーザーにフル ロール アクセスを許可していましたが、コントローラー メソッドごとに特定のロールを作成すると、ロールが完全に無視され、認証済みユーザーにフル アクセスが許可され続けました。
Config.groovy で行っていることは次のとおりです。
grails.plugins.springsecurity.securityConfigType = SecurityConfigType.InterceptUrlMap
grails.plugins.springsecurity.interceptUrlMap = [
"/controllerName/create": [ "hasRole( 'ROLE_CREATE' )" ],
"/controllerName/remove": [ "hasRole( 'ROLE_DELETE' )" ],
"/controllerName/listEntries": [ "hasRole( 'ROLE_VIEW' )" ],
"/controllerName/listAllEntries": [ "hasRole( 'ROLE_VIEW' )" ],
"/controllerName/getDefaultCategories": [ "hasRole( 'ROLE_VIEW' )" ]
]
UrlConfig.goovy に controllerName のエントリがありません。
controllerName の create、remove、またはその他のサービスがアプリケーションによって呼び出される場合、ユーザーが指定されたロールを持っているかどうかは問題ではありません。そこにマッピングがないように機能します。
他の設定がinterceptUrlMapをオーバーライドしている可能性はありますか? もしそうなら、どこから見始めるべきですか?
Grails 1.3.8 を使用する必要があることに言及する必要があります。
更新: 以下で説明する小文字を試してみましたが、それでも失敗しました。ただし、トップ レベル ("/controllername/**") のコントローラー エントリを実行すると (コントローラー内でアクションを指定するのではなく、アクセスが制限されます。残念ながら、"/controllername/create" タイプのセキュリティを実行したいと考えています。何かご意見は?