使用spring security来授权对象?

时间:2017-03-01 16:17:22

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

我有一个具有两个域模型的应用程序 组织和TicketQuestion。 经过身份验证的用户希望创建具有组织属性的票证来解决该问题 每个用户都允许这样的组织:

User1允许进入Organization1

User2允许进入Organization2

TicketController.java具有创建故障单的保存方法。 我有这个漏洞:User1可以使用具有Organization2(没有权限)的票证调用方法。 我正在使用Hibernate过滤器来授权GET方法中的数据,但我不知道如何保护用户想要持久存在并且没有权限的数据?

/ticket/save  

{
   id:-1,
   organization:{
    id:2,
    title:'organization2' //not allowed this organization
   }
}


@Entity
@Table(name = "core_organization_structure")
public class OrganizationStructure {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "title", nullable = false)
    private String title;
}

@Entity
@Table(name = "core_Ticket")
public class Ticket  {


    ..some prop

    @ManyToOne
    @JoinColumn(name = "org_id", nullable = false)
    private OrganizationStructure org;
}

1 个答案:

答案 0 :(得分:0)

提交表单时,您需要加载经过身份验证的用户的权限,并检查他们是否有权执行他们尝试执行的操作。

如果用户正在尝试为他们没有权限的组织创建故障单;不要坚持记录,并妥善处理。 (抛出异常,返回401等......)