我有一个后端服务器,其中已认证的客户端根据其帐户级别被授予对各种端点的权限。因此,客户端可以是普通用户,管理员等。 我所有的端点都已经实现了区分谁有权访问什么内容所需的逻辑。我缺少的是客户端能够查询以获得给定资源上的特权的功能。
例如,假设有一个客户可以管理书籍的系统。书籍按类别排序。管理员可以创建书籍和类别,而用户可以检索书籍和类别并更新书籍:
GET /books/42 - all clients
PUT /books/42 - all clients
GET /categories/fiction/books - all clients
POST /categories/fiction/books - admin only
现在,我希望客户端能够根据其权限查询对给定资源将执行哪些操作。这可能是有用的,例如Web应用程序可根据是否允许当前用户启用/禁用用于创建书籍的按钮。但是,我不想为每种资源分配大量的权限,例如让客户端获得诸如ADD_BOOKS,UPDATE_BOOKS,ADD_CATEGORIES等权限的列表,因此,我正在考虑使用HTTP OPTIONS
方法。
围绕这种机制是否有最佳实践?
例如,HTTP OPTIONS
应该始终报告针对资源实现的完整方法集,还是动态报告仅GET
是当“用户”正在调用时/categories/fiction/books
的允许方法,而GET, POST
可能被报告为“管理员”的允许方法?
另一种方法是始终报告完整的可用方法集,但在HTTP OPTIONS
响应正文中包含有关每种方法的附加信息。
有人看到这样使用OPTIONS
的系统吗?有更好的选择吗?