我一直在尝试实现一个通用接口来支持多个访问控制。目前,我有以下控制器:
@RequestMapping(path = "/api")
public interface MyController {
@GetMapping(value = {"/public/workers/name/{workerString}"})
ResponseEntity<T> searchByName(@PathVariable String workerString);
@GetMapping("/hr/worker/general/{id}")
ResponseEntity<T> general(@PathVariable int id);
}
我有一个拦截器,它捕获请求并检查用户是否具有“hr”权限。现在我需要添加另一个场景,用户可以拥有“hd”权限,并且可以执行相同的过程。简单的解决方案是执行以下操作:
@GetMapping(value={"/hr/worker/general/{id}","/hd/worker/general/{id}"})
ResponseEntity<T> general(@PathVariable int id);
还有我的 interceptor
将根据url以常规方式检查用户是否具有权限。
我的问题是可伸缩性。如果明天我必须添加其他类型的权限怎么办?”嗯“hs”等等。。我不想在Map中添加更多的URL。这样做可能吗
@GetMapping("/{permission}/worker/general/{id}")
ResponseEntity<T> general(@PathVariable int id);
显然这不起作用,因为我必须使用声明的path变量。这里有什么替代方案,什么是好的做法?
我会很感激你的任何想法或帮助。谢谢。
暂无答案!
目前还没有任何答案,快来回答吧!