【问题标题】:Authorize Object using spring security?使用弹簧安全授权对象?
【发布时间】:2017-07-21 01:52:35
【问题描述】:

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

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;
}

【问题讨论】:

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


    【解决方案1】:

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

    如果用户尝试为他们无权访问的组织创建票证;不要持久化记录,并妥善处理。 (抛出异常,返回 401 等...)

    【讨论】:

    • 是的,基本解决方案之一是 .想象一下我有一个域模型,它有 10 个属性都有这个问题。我为每个属性编写加载代码?!另一个问题:我有添加更新和删除方法,并且可能有超过这 3 种方法,另一个问题是,如果在 100 个域模型中使用的组织编写此检查代码 100 次,我想在我的服务之外解决问题。跨度>
    猜你喜欢
    • 2013-07-16
    • 2015-04-19
    • 2016-01-02
    • 2011-05-16
    • 2011-07-12
    • 2015-01-09
    • 2023-01-03
    • 2018-09-08
    • 1970-01-01
    相关资源
    最近更新 更多