使用弹簧安全授权对象?
Posted
技术标签:
【中文标题】使用弹簧安全授权对象?【英文标题】: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;
【问题讨论】:
【参考方案1】:提交表单时,您需要加载经过身份验证的用户的权限,并检查他们是否有权执行他们尝试执行的操作。
如果用户尝试为他们无权访问的组织创建票证;不要持久化记录,并妥善处理。 (抛出异常,返回 401 等...)
【讨论】:
是的,基本解决方案之一是 .想象一下我有一个域模型,它有 10 个属性都有这个问题。我为每个属性编写加载代码?!另一个问题:我有添加更新和删除方法,并且可能有超过这 3 种方法,另一个问题是,如果在 100 个域模型中使用的组织编写此检查代码 100 次,我想在我的服务之外解决问题。跨度>以上是关于使用弹簧安全授权对象?的主要内容,如果未能解决你的问题,请参考以下文章
我应该使用基于 Spring 安全角色的授权还是 Angular Route Guards 或两者兼而有之? [关闭]
使用oauth2的Spring安全性向授权URL添加其他参数?