アプリケーションに 2 種類のロールがあるとします。
- 管理者
- ゾーンマネージャー
管理者はすべてのオフィス ID を取得できますが、ゾーン マネージャーは自分のゾーンに割り当てられたオフィスのみを取得できます。コントローラーで私はこのようなものが欲しい
@RequestMapping(method = RequestMethod.GET)
Collection<Long> getOfficeIds(){
// returns all office ids in system
}
@RequestMapping(method = RequestMethod.GET, value = "/{zoneId}")
Collection<Long> getOfficeIds(@RequestParam("zoneId") long zoneId){
// returns all office ids in the zone
}
ここで、すべてのユーザーに、引数なしのバージョンのみ (最初の方法) でリクエストを送信してもらいたいと考えています。システムは、コントローラーにアクセスする前にユーザー ロールを取得し、適切なコントローラー メソッドを呼び出す必要があります(管理者の場合は最初のメソッドを呼び出し、ゾーン マネージャーの場合は適切なゾーンで 2 番目のメソッドを呼び出します)。
問題は、それが可能かどうかです。はいの場合、これを行う最良の方法は何ですか? サーブレット フィルターでリクエストを変更してみることもできます。メソッド引数リゾルバーを使用する方法はありますか?