如何在spring security acl中创建深度对象的权限?

时间:2017-10-24 16:54:36

标签: spring hibernate spring-mvc spring-security spring-security-acl

众所周知,访问对象的方法之一是使用spring security acl方法。在此方法中,在执行一组设置并存储所需数据后,使用以下方法,我们将检查用户是否可以在该方法中执行某些操作。 考虑一个具有下图所示结构的项目。在此图中,每个用户都可以访问单个部门,因此,如果在系统上创建信息,则应基于此访问权限。例如,用户不应该为不在其授权部门的工作人员注册工作。

public class Department {
    String departmentName;
    List<Employee> employeeList;

}

public class Employee {
    Department department;
    List<Job> jobList;
}

public class Job {
    String jobTitle;
    Employee employee;
}

public class User {
    String username;
    List<Department> departmentList;
}



@Transactional
@PreAuthorize("hasPermission(#job.employee.department.id, ‘Department’, 'write')")
public void save(Job job) {
    super.save(job);
    //TODO 
}

考虑发送到UI层的信息是作为JSON发送的。在这种情况下,对于作业插入,JSON需要如下所示。

{
    jobTitle:”CTO”,
    employee:{
           id:1
        }
}

此信息将转换为控制器层中的Job对象,然后在服务层中调用save方法。在这种情况下,给定的访问不起作用,因为 job.employee.department.id为空要确定这应该是什么,我是否需要根据id在控制器中加载此对象?除了ACL之外还有其他方法吗?

0 个答案:

没有答案