【发布时间】:2017-12-17 00:28:45
【问题描述】:
我们使用的是 spring 和 spring-security-3.2。最近我们正在向 RestAPIs 添加注解 @PreAuthorize(之前它是基于 URL 的)。
@PreAuthorize("hasPermission('salesorder','ViewSalesOrder')")
@RequestMapping(value = "/restapi/salesorders/", method = RequestMethod.GET)
public ModelAndView getSalesOrders(){}
我们已经有了带有注释的全局异常处理程序 - @ControllerAdvice 和自定义 PermissionEvaluator,除了错误消息之外一切正常。
假设某个用户正在访问 API 目前没有“ViewSalesOrder”权限,那么 spring 默认会抛出异常“访问被拒绝”,但没有说明缺少哪个权限(我们要求提及缺少哪个权限)。
是否可以抛出包含权限名称的异常,所以最终的错误消息应该类似于“访问被拒绝,您需要 ViewSalesOrder 权限”(这里的权限名称应该来自 @PreAuthorize 注释)?
请注意,我们有 100 个这样的 restAPI,因此我们非常感谢通用解决方案。
【问题讨论】:
-
您采用了什么解决方案?我仍然找不到设置自定义错误消息的方法
标签: spring-mvc spring-security annotations