假设应用程序中有两种类型的角色 -
- 行政
- 区域经理
管理员可以获取所有办公室 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
}
现在我希望我的所有用户只使用无参数版本(第一种方法)提出请求。系统应该在点击控制器之前获得用户角色,并且应该调用适当的控制器方法(如果管理员则调用第一个方法,如果区域经理调用具有适当区域的第二个方法)。
问题是,这有可能吗?如果是,那么最好的方法是什么?我可以尝试在 servlet 过滤器中修改请求。有没有使用方法参数解析器的方法?