2012-01-22 15 views

回答

6

我想这取决于您的身份验证,授权方法以及您需要为用户考虑的安全类型。如果你试图成为RESTful,你不能有会话来保存状态(至少在服务器端)。你可以,但如果这对你很重要的话,由于在服务器上保存状态,它不会成为RESTful。我听说可以保存状态客户端,但从我读过的内容来看,我不确定社区对采用此方法的某些实现感觉如何。 (就像cookies一样,我会在稍后再次访问。)

假设您有用户使用用户名和密码登录。您可以将这些信息保存在您的Backbone应用程序中,也许您有一个名为AUTH的模型来执行此操作。每次向服务器发送请求时,您都会发送该数据,每次出行时服务器会认证并给予或拒绝对给定资源的访问。如果您使用基本身份验证,则此信息将出现在我认为的标头中。使用SSL减轻了围绕通过电线发送此信息以及讨论其余部分的一些主要安全问题,让我们假设这是我们正在使用的。

另一种可以做到这一点的方法是使用加密的cookie,加密的cookie会话。这是我用我目前的应用程序做的。老实说,我不知道这是否被认为是违反RESTful原则。网络上的一般聊天似乎有很多“饼干不好,会话不好”,有些人说,“变得真实”。如果有人可以访问用户计算机,使用cookie会让你遭受cookie劫持,但根据你的应用程序和安全需求,这可能不是一个不合理的选择。它适用于我,如果它不是RESTful,我喜欢称它为RESTLike。

要关闭我只会描述我的设置。这也很好,让你的想法以及堆栈的意见。

基本上我有一个设置,当有人进入主页面时,服务器检查加密的cookie会话。如果cookie会话无效或不存在,它会为用户提供常规页面,并有机会登录。当他们登录时,我通过POST发送该信息,因此它位于请求的主体中,而不是URI。 (这在技术上违反了REST HTTP动词概念,因为您使用POST来保存资源。)处理该信息时,请检查用户名,传递由唯一salt创建的哈希,然后服务器创建加密的会话cookie并通过它回到用户。现在,每次我的用户点击需要认证的路由时,服务器都会检查cookie以确保它仍然有效(时间限制,用户信息等),如果允许,则允许访问。如果没有,它会销毁cookie信息并发回相应的状态码。骨干应用程序通过重置任何不应由未经身份验证的用户手中的视图和数据并向他们显示登录屏幕来对此作出反应。

希望这给你一个想法。这是我如何去做的答案,但如果有人有批评或者有更好的想法,我会乐意为他们加注。

相关问题