首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于管理和非管理帐户的Restful设计

用于管理和非管理帐户的Restful设计
EN

Stack Overflow用户
提问于 2014-12-26 07:48:27
回答 1查看 2.2K关注 0票数 0

如何为管理和非管理帐户设计api面临的问题。我遵循MVC模式,控制器将映射到uri。

编造情景:

让我说,我有一个系统,允许用户赎回礼物后,他们花了钱购买商品和收集积分。

我的系统有一个用户配置文件,礼物,和赎回表。每个用户可以赎回多个礼物,每一个礼物可以被许多用户赎回。(赎回是连接表)。

要访问用户配置文件,uri将如下所示:

代码语言:javascript
复制
GET /user/0001

赎回一份礼物

代码语言:javascript
复制
POST /user/0001/redeem {"amount":1, "address":"old address"}

到目前为止,一切看起来都很好,很整洁。现在,当赎回需要由管理员用户批准时,问题就出现了。

因此,将赎回权更新为已批准的状态。

代码语言:javascript
复制
PUT /user/0001/redeem/100 {"status":"approve"}

用户可以更新送货地址。

代码语言:javascript
复制
PUT /user/0001/redeem/100 {"address":"New address"}

现在我面临以下问题:

  1. 如果两个路径指向uri,控制器将在相同的功能中有两个不同的处理代码。

如果我在uri前面添加一个管理器( admin /user/0001/redeem/100)。2不同路径将识别相同的资源。

  1. 为了识别用户身份,在授权头(Authorization="USERNAME:SECURITY_HASH")上完成了操作。这是典型的restful方法吗?

  1. 我无法区分用户角色,因为管理和用户存储在不同的表中。因此,如果uri指示用户角色,这将使事情变得更简单。我不想总是在用户之前查询管理表。
EN

回答 1

Stack Overflow用户

发布于 2014-12-26 08:10:49

我要做以下几点:

( 1)有URL,如POST /admin/user/1000/ have /核可

原因:

  • 我不想公开用户记录中哪些字段必须更改为批准凭单的知识
  • 我倾向于将所有管理操作与正常用户操作分开。

2)“常用”方法之一是在成功登录后发出(定期更新的)会话cookie (与用户名或密码哈希无关),然后单独使用一种机制,将此cookie与用户名关联起来,并检查是否允许对该用户名进行给定的操作。

原因:减少了暴露用户信息的风险。(如果攻击者窃取cookie,此方法可能仍然容易受到攻击,但另一种方法也是如此)。

3)如果我们讨论安全性,将管理和用户数据存储在不同的表中并不是借口:)使用上面描述的cookie机制在这里可能会有所帮助,但是您仍然需要建立一种方法来验证给定的用户可以调用给定的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27654348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档