我有点困惑为什么有人会使用@PreAuthorize("denyAll")
作为方法。根据Spring安全文档,它总是评估为false。如果我们不允许访问特定方法,那么保留这种方法的重点是什么。为什么不评论出来?或者仍然可以从同一个类中访问它?我试图理解在什么情况下会出现这样的要求。感谢。
答案 0 :(得分:1)
我发现一般拒绝所有的一个小澄清是
@DenyAll注释可用于限制任何人登录或不登录的业务界面访问。该方法仍然可以在bean类本身内调用。
因此,jist可以用于某种方法,该方法由于某种原因是公开的或已被暴露(可能它实现了一个接口),但绝不应该直接从外部调用。然而,它们可以从内部(在类内)调用。
这是link
我能给你的一个真实例子是(这与我的工作密切相关)。我们有2个业务部门,代码库相同。现在在一个单元中有一个功能,其中一些移动经销商可以直接调用服务,该服务直接取消凭证到运营商端,但在另一个单元中,由于某些业务规则,我们需要阻止这个。由于我们在两个系统中使用相同的接口,因此在一个系统中我们使用denyall阻止了它的使用
希望这能给你一个清晰的想法。
答案 1 :(得分:0)
我以这种方式装饰服务类,这需要各个内部服务方法来覆盖拒绝类级别的PreAuth注释。这样可以确保该类中的每个方法都将得到适当的保护,而不会使用denyAll的后备。
我知道这已经很老了,但我偶然发现了@PreAuthorize('denyAll')的语法,并以为我会扔2美分。