Spring Security プラグイン (バージョン 1.2.7.3) とセキュアなアノテーション アプローチ (デフォルトのもの、詳細はこちら) を使用する Grails (2.0.4) アプリケーションがあります。
これで、UrlMapping.groovy にこれらの URL があり、リソース キーまたはコントローラーとアクションのペアが次のようになります。
"/$controller/$action?/$id?" {
constraints {
// apply constraints here
}
}
// other rules, all working properly
"/api/item/$id?"(resource: 'itemRest')
'/api/item/batch-delete'(controller: 'itemRest', action: 'batchDelete')
RESTful マッピングは ItemRestController と完全に連携します。すべてのメソッド (表示、更新、保存、削除) が適切な HTTP メソッドに正しくマッピングされます。また、追加のメソッド (batchDelete) も同様に機能します。
次のようにして、API URL を保護しました。
grails.plugins.springsecurity.controllerAnnotations.staticRules = [
// ...
'/something/**': ['IS_AUTHENTICATED_FULLY']
'/api/**': ['IS_AUTHENTICATED_FULLY']
]
今、私が呼び出すと、ログインページにリダイレクトされます:
http://host/context/something/bla_bla
しかし、私が呼び出す場合はそうではありません(必要に応じて適切なペイロードを使用して):
http://host/context/api/item/batchDelete
http://host/context/api/item/1
http://host/context/api/item
残りのコントローラーをリソースキーにマッピングするときに、静的ルールが適切に機能していない可能性があります。
UrlMapping.groovy ファイルには「何か」の URL が存在しないことにも注意してください。
何か案は?