我开始慢慢开始使用REST而且有一件事令我困惑。
我知道REST中的大部分内容都是“资源”。所以我想知道在用户注册/登录的情况下我们会指出什么样的资源?
是users
吗?那么这是否意味着users
上的POST会为新用户注册。如果是这种情况,那么我如何验证用户?使用编码的密码/用户名对在users
上获取GET?
我真的很困惑。
鉴于我刚刚开始理解REST,我的理解可能完全错误。
任何帮助表示赞赏!
谢谢!
答案 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的,但如果你只是为你的客户创建一个真正的服务器端会话的幻觉,我想这很好。
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来查询