我有一个具有两个域模型的应用程序 组织和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;
}
答案 0 :(得分:0)
提交表单时,您需要加载经过身份验证的用户的权限,并检查他们是否有权执行他们尝试执行的操作。
如果用户正在尝试为他们没有权限的组织创建故障单;不要坚持记录,并妥善处理。 (抛出异常,返回401等......)