我正在构建一个带有服务层的 Web 应用程序。服务层将使用 RESTful 设计构建。我们的想法是,在未来的某个时候,我们可能会构建使用与 Web 应用程序相同的服务层的其他应用程序(iPhone、Android 等)。我的问题是 - 如何实现登录?我认为我在从更传统的基于动词的设计转向基于资源的设计时遇到了困难。如果我用 SOAP 构建它,我可能会有一个名为 Login 的方法。在 REST 中我应该有一个资源。我很难理解应该如何构建用于登录的 URI。应该是这样的吗:
http://我的服务/ http://myservice/{用户名}?p={密码}
编辑:前端 Web 应用程序使用传统的 ASP.NET 框架进行身份验证。然而,在身份验证过程中的某个时刻,我需要验证提供的凭据。在传统的 Web 应用程序中,我会进行数据库查找。但在这种情况下,我正在调用服务而不是进行数据库查找。因此,我需要服务中的某些内容来验证所提供的凭据。除了验证提供的凭据之外,我可能还需要用户成功通过身份验证后的某种信息 - 例如他们的全名、ID 等。我希望这能让问题更清楚。
或者我没有以正确的方式思考这个问题?我觉得我很难正确描述我的问题。
Corey
正如 S.Lott 已经指出的那样,我们这里有两个折叠的东西:登录和身份验证
身份验证超出了本文的范围,因为这已被广泛讨论并且达成了共识。然而,要让客户端针对 RESTful Web 服务成功验证自身身份,我们实际上需要什么?是的,某种令牌,我们称之为访问令牌。
客户端)所以,我需要的只是一个访问令牌,但是如何以 REST方式获得这样的令牌呢?
服务器)为什么不简单地创建它呢?
客户)怎么来的?
服务器)对我来说,访问令牌只不过是一种资源。因此,我将为您创建一个,以换取您的用户名和密码。
因此,服务器可以提供资源 URL“/accesstokens”,用于 POST 用户名和密码,返回新创建的资源“/accesstokens/{accesstoken}”的链接。
或者,您返回一个包含访问令牌和带有资源链接的 href 的文档:
<access-token
id="{access token id goes here; e.g. GUID}"
href="/accesstokens/{id}"
/>
最有可能的是,您实际上并未将访问令牌创建为子资源,因此不会在响应中包含其 href。
但是,如果您这样做,客户端是否可以代表其生成链接?不!
请记住,真正的 RESTful Web 服务以客户端可以自行导航的方式将资源链接在一起,而无需生成任何资源链接。
您可能遇到的最后一个问题是,您是否应该将用户名和密码发布为 HTML 表单或文档,例如XML 或 JSON - 这取决于......:-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)