小编Har*_*rsh的帖子

使用@Preauthorize和@@ ControllerAdvice的自定义错误消息

我们正在使用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,因此非常感谢通用解决方案.

annotations spring-mvc spring-security

7
推荐指数
2
解决办法
1313
查看次数

标签 统计

annotations ×1

spring-mvc ×1

spring-security ×1