【问题标题】:data realted access in authenciation身份验证中的数据相关访问
【发布时间】:2012-02-08 12:52:45
【问题描述】:

我正在构建一个 web 应用程序,并且有一些操作是为识别的人保护的。

我使用sping安全进行访问控制,但是我不知道如何在深入到数据级别时控制它们。

例如,有两个操作listedit操作。

administrator of the companyadministrator of one department 都可以访问这些操作,但它们可以“列出”或“编辑”的数据不一样。

administrator of the company 可以访问公司的所有数据,而administrator of one department 只能访问他/她部门的数据。

所以我想知道实现这些要求的最佳做法是什么?

【问题讨论】:

    标签: authentication spring-security role-base-authorization


    【解决方案1】:

    最简单的方法——在服务层使用 PostFilter 注解。

    @Transactional(readonly=true)
    @PostFilter("hasPermission(filterObject, 'edit')")
    List<DepartamentData> getDepartamenData();
    
    @Transactional
    @PreAuthorize("hasPermission(#data, 'edit')")
    List<DepartamentData> editDepartamenData(DepartamentData data);
    

    或者另一个例子:

    @Transactional(readonly=true)
    @PostFilter(
      "   hasRole('company_admin')" +
      "|| (hasRole('departament_admin') && filterObject.departament.equals(principal.departament))")
    List<DepartamentData> getDepartamenData();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-12
      相关资源
      最近更新 更多