我们正在使用spring-spring-security-3.2.最近我们将@PreAuthorize注释添加到RestAPIs(之前它是基于URL的).
@PreAuthorize("hasPermission('salesorder','ViewSalesOrder')")
@RequestMapping(value = "/restapi/salesorders/", method = RequestMethod.GET)
public ModelAndView getSalesOrders(){}
Run Code Online (Sandbox Code Playgroud)
我们已经有了使用@AtrollerAdvice和自定义PermissionEvaluator注释的全局异常处理程序,除错误消息外,一切正常.
让我们说有些用户在没有"ViewSalesOrder"权限的情况下访问API.默认情况下,spring会抛出异常"访问被拒绝",但没有告诉哪个权限丢失(我们要求提及缺少哪个权限).
是否可以抛出一个也包含权限名称的异常,因此最终的错误消息应该看起来像"访问被拒绝,你需要ViewSalesOrder权限"(这里的权限名称应该来自@PreAuthorize注释)?
请注意,我们有100个这样的restAPI,因此非常感谢通用解决方案.