【问题标题】:Spring Security and Multitenancy / REST -> How? Best practice? Reference app?Spring Security and Multitenancy / REST -> 如何?最佳实践?参考应用?
【发布时间】:2011-03-20 16:49:13
【问题描述】:

我一直在寻找一种保护 URL 的方法,例如

@RequestMapping("/owners/{ownerId}/pets/new")

在用户(而非角色)级别,即只有 ID 为 {ownerId} 的所有者拥有访问权限。此外,我想保护 RESTful 设计,包括。对所有者级别的 JSON 服务的异步访问动态

我的问题:

  1. 如何最好地使用 Spring 安全?
  2. 这是如何完成的 /owners/{ownerId}/pets/new 是 通过异步请求访问?
  3. 如何访问上述 URI 来自第三方应用程序,例如苹果手机 应用程序?
  4. 任何示例/参考应用程序/文章?

谢谢 呃

【问题讨论】:

    标签: java ajax spring spring-security multi-tenant


    【解决方案1】:

    使用@PreAuthorize。您可以使用 Spring-EL 表达式,如

    @RequestMapping("/owners/{ownerId}/pets/new")
    @PreAuthorize("#ownerId == principal.id)")
    public void doSomething(@RequestParam Number ownerId);
    

    以上代码仅代表。一些细节取决于您的实现。

    阅读更多here

    【讨论】:

      【解决方案2】:

      关于您的问题 1,我能想到的最简单的方法是 - 在您的控制器方法中,您可以首先根据 ID 检查用户授权。 UserDetails 可从 SpringSecurityContext 访问,您可以从中检索当前登录用户的 ID。从请求 URL 获得的 ID 也可以作为路径变量访问。如果这两个不匹配,您可以简单地抛出一个异常,如 AccessDeniedException。 您可以将此逻辑移动到 BaseController 中的一个方法中,该方法将充当所有控制器的超类,并且所有控制器方法都可以使用相同的方法进行类似的检查。

      【讨论】:

        猜你喜欢
        • 2010-11-07
        • 2020-09-30
        • 2011-08-24
        • 1970-01-01
        • 2018-04-24
        • 1970-01-01
        • 1970-01-01
        • 2011-08-26
        • 2017-04-06
        相关资源
        最近更新 更多