RESTfull方法来验证访问资源的权限

问题描述

我正在考虑如何在我的REST API中设计(可能是新的)端点。

目前,我有两个端点:

GET /contracts

GET /contracts/{id}?accessCode={some code to access the contract}

一个返回所有合同的合同是受保护的,因此只有具有有效JWT令牌的用户才能访问它。它返回该用户的所有合同(该用户的ID在令牌中)。

要获得一份特​​定合同的第二份合同并不安全,每个人都可以称之为。

  • 如果请求中存在JWT令牌,则如果合同是由调用端点的用户创建的,则它将返回合同
  • 如果不存在JWT令牌,则必须存在accessCode,并且如果它与DB中存储的代码(对于特定合同)匹配,则将合同退回

现在我有一个要求公开一些端点(或修改现有端点)的要求,该端点将允许用户检查是否可以为某些现有合同创建修订(或附录)。从前端的角度来看,用户必须知道合同ID和该合同上有关当事方的信息(为简单起见,我们假设名称和姓氏)。如果用户知道此信息,则可以创建合同的修订,因此前端需要有关合同的信息(基本上是我的端点GET /contracts/{id}返回的信息。)

我不确定如何设计这种端点,以便用户可以验证是否允许他创建修订。基本上,我需要一个可以接受合同编号以及合同上当事人的名字和姓氏的端点。

我正在考虑修改现有端点GET /contracts,以使其可以接受?contractNumber={id}&firstName={firstName}&lastName={lastName}之类的查询参数。

另一种方法可能是创建一个新的“验证”端点,例如GET /permission/contract/{id}?lastName={lastName}&firstName={firstName},如果姓和名匹配,它将返回合同详细信息。

建议的解决方案之一是更好的还是更多的RESTfull?还是已经有一些不同的已知方法,如何处理呢?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...