在REST中表示用户

时间:2012-10-15 05:08:47

标签: rest authentication restful-architecture

我开始慢慢开始使用REST而且有一件事令我困惑。

我知道REST中的大部分内容都是“资源”。所以我想知道在用户注册/登录的情况下我们会指出什么样的资源?

users吗?那么这是否意味着users上的POST会为新用户注册。如果是这种情况,那么我如何验证用户?使用编码的密码/用户名对在users上获取GET?

我真的很困惑。

鉴于我刚刚开始理解REST,我的理解可能完全错误。

任何帮助表示赞赏!

谢谢!

4 个答案:

答案 0 :(得分:2)

这是REST的一个不寻常但常见的问题。继续考虑资源。

当您登录时,您要求服务器为您创建会话以访问某些资源。因此,在这种情况下,要创建的资源将是一个会话。因此,或许url将是 / api / sessions ,并且具有会话对象(可能只是由用户名或密码以及可能是UUID组成的对象)的该URL的POST将创建会话。在真正的REST中,您可能会指向 / api / sessions / {UUID} 的新会话,但实际上(出于安全目的),您可能只需注册会话cookie。

如果我自己实现登录表单,这是我个人的登录表单方法,但我总是倾向于使用Spring security来完成这项工作,所以这个要求从未真正考虑过。

答案 1 :(得分:1)

我正在研究类似的东西,这是我迄今为止所采取的解决方案。欢迎任何建议:)

users专门用于单身和帐户修改。

  • GET /users/{id}获取个人资料页面的用户
  • PUT /users使用用户名和密码创建新用户。实际上,这应该发送一个电子邮件,其中包含指向使用GET方法确认注册的地方的链接。
  • POST /users/{id}修改用户(例如更改密码)
  • DELETE /users/{id}

对于身份验证,我倾向于认为我请求的资源是令牌或身份验证。我试图避免使用" session"因为它应该是反RESTful的,但如果你只是为你的客户创建一个真正的服务器端会话的幻觉,我想这很好。

    带有usename / password的
  • PUT /authentication/返回带有user_id / hashed值对的Set-Cookie。也许它应该是POST。不确定
  • DELETE /authentication/{user_id}只删除Cookie并退出用户。也许代替user_id它应该是唯一的token_id

答案 2 :(得分:0)

可以使用restful方法创建,读取,更新和删除资源,例如: https://cwiki.apache.org/S2PLUGINS/restful-crud-for-html-methods.html

因此,如果您想管理用户,这将是一种安静的方法。

如果您想验证您所需的管理数据集中的用户 设计或选择一个宁静的认证机制,参见例如 http://de.slideshare.net/sullis/oauth-and-rest-web-services http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/

有关这些问题的快速入门,您可能需要查看dropwizard: http://dropwizard.codahale.com/

答案 3 :(得分:-2)

资源可能有一个或多个URI 但是一个URI只有一个资源

因此,在对用户进行身份验证时,您正在向已注册的用户发送消息 注册时,您正在寻址尚未注册的用户(资源)。

您只需要一种方法将其处理到您的SERVER。

这是从SUGARCRM REST Web服务实现中获取的示例。 REST就像对您的SERVER的http请求。

例如,在实施REST Web服务时。 每个REST请求都将使用相同的文件说

www.your_domain.com/Rest.php?json={your_json_method:'method',params:'watever'}

Json中的请求是您作为参数发送的请求

请求对用户进行身份验证 {method:'SignUp', username:'abc', pass:'pass', confirm_pass:'pass'} 要求注册用户   {method:'Login', username:'abc', pass:'pass'}

通过这种方式你可以拥有任意数量的参数

记住JSON不是必须使用的。你可以使用简单的get params来查询