spring 安全、方法安全和 url 安全

标签 spring spring-security

我正在学习 Spring 安全性,但我对它的灵活性感到困惑..

我知道我可以通过在标签中定义规则来保护网址
然后我看到有一个@secure 注释可以保护方法。
然后还有其他注释来保护域(或 POJO)的读取/更新

所以当我想开发一个典型的权限/角色/用户 Web 应用程序时,除了创建规则来保护 url 之外,我还必须使用 @secure 注释来保护方法吗?

ej。

  • 用户输入受限网址
  • 应用程序要求登录
  • 应用程序检查角色是否可以访问 url
  • 用户选择“添加新”选项
  • 再次检查该用户是否有权调用方法“addNew()”??

  • 或者步骤 4 或 5 之一是多余的。

    对不起我的英语

    最佳答案

    URL 级别的安全性相当丰富,可以通过查看 fluent API of HttpSecurity 看出。 , 例如。
    但是在 Spring 安全性中使用方法级安全性至少有两个原因:

  • 正如 Jonathan W 所指出的,您的安全逻辑可以通过 http 以外的连接器类型访问。例如,逻辑可以通过 EJB 公开。
  • 对于 REST API,相同的 URI 可能支持具有不同授权规则的不同 http 方法。例如 /myapi/order/{id}可以接受 GET 和 DELETE,并且 DELETE 可能仅对具有 Supervisor 角色的用户可用。您不能通过 URL 安全性指定该规则,但您可以通过方法安全性来指定该规则,例如使用 @Secured("Supervisor")在处理 DELETE 的方法上。
  • 关于spring 安全、方法安全和 url 安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10826362/

    相关文章:

    java - Spring security oAuth 2.0(无效 token 不包含资源id(oauth2-resource))

    javascript - 在 JavaScript 中访问请求参数

    security - Spring 安全策略MODE_INHERITABLETHREADLOCAL。为什么?

    spring-security - 从 Java 6 升级到 Java 7 后 Kerberos 损坏

    Spring Login On HTTPS 在验证后重定向到 HTTP

    java - 查找所有 spring @value 属性

    java - CentOS上的Spring Boot启动时间较长

    spring-security - 获取用户主体的自定义属性

    Spring security,如何基于动态角色限制用户访问某些资源?

    java - 属性 'passwordEncoder' 在 Spring Security 中抛出异常