代码之家  ›  专栏  ›  技术社区  ›  johnlinp

如何在SpringSecurity中抛出自定义AccessDeniedException?

  •  1
  • johnlinp  · 技术社区  · 7 年前

    我是新来的春天安全。什么时候? AccessDeniedException 如果发生这种情况,我想在响应中说明拒绝访问的原因。

    例如,我想显示“您不能删除对象,因为您不是所有者”或“您不能创建新对象,因为您的帐户已挂起”。我希望这样的消息以自定义的方式传播 ,例如。 NotOwnerException AccountSuspendedException .

    我正在努力 @PreAuthorize 带有自定义 PermissionEvaluator 权限评估器

    1 回复  |  直到 7 年前
        1
  •  0
  •   johnlinp    7 年前

    我猜SpringSecurity不建议甚至不允许我们抛出一个自定义 AccessDeniedException .

    根据本文的讨论 GitHub issue

    AccessDeniedHandler通常仅在经过身份验证的用户尝试访问他们不应该访问的内容时调用。应用程序的正常流应该阻止他们这样做,因此只有当他们故意操纵url(或其他东西)以试图绕过正常边界或者应用程序中存在bug时,才会发生这种情况。