为什么要保护Spring Security中的方法而不仅仅是url?

时间:2014-09-30 18:35:21

标签: methods spring-security

HY,

  • 没有足够的安全网址?
  • 用户是否可以在没有所需凭据的情况下调用网址,这是保护方法的原因?
  • 一个真正的例子,为什么安全方法是必要的而不仅仅是网址?

由于

1 个答案:

答案 0 :(得分:1)

通常只需在简单情况下保护URL即可。将方法级别的安全性视为URL级别安全性的补充。例如,可以借助URL级别安全性来简单地检查用户是否具有访问应用程序中某些URL的特定角色。

但是,有些情况下您需要更细粒度的安全性。如果您希望仅允许其创建者访问给定产品(id = 5),则不会仅使用URL级别安全性。但是你可以通过方法级别的安全性实现这一点。

考虑此网址。

https://myapp.com/products/5

您可以检查访问此网址的用户是否具有REQUIRED_ROLE角色。

<security:intercept-url pattern="/products/**" access="hasRole('REQUIRED_ROLE')" />

如果您需要确保用户也是产品创建者,则需要以下内容:

...

@PreAuthorize("#product.creator == authentication.name")
public void doSomething(Product product);

...