Authentication 在Ember.js中构建多用户应用程序

Authentication 在Ember.js中构建多用户应用程序,authentication,ember.js,sails.js,Authentication,Ember.js,Sails.js,如果这是一个措词不当或过于基本的问题,请原谅我。我是一名经验丰富的设备程序员,但对web应用程序的世界来说非常陌生 我创建了一个小的emberjs应用程序,它允许用户创建事件,对事件应用标记,并为每个事件设置一些基本属性。我在后端使用Sails,基本上是开箱即用的 由于目前存在,该应用程序没有“用户”的概念。没有身份验证,每个访问服务器的人都可以看到存储中的所有事件、标记等 我的下一步是创建用户的概念,将某些事件和标记与某些用户关联,并且只允许经过身份验证的用户访问存储中自己的数据 我正在寻找一

如果这是一个措词不当或过于基本的问题,请原谅我。我是一名经验丰富的设备程序员,但对web应用程序的世界来说非常陌生

我创建了一个小的emberjs应用程序,它允许用户创建事件,对事件应用标记,并为每个事件设置一些基本属性。我在后端使用Sails,基本上是开箱即用的

由于目前存在,该应用程序没有“用户”的概念。没有身份验证,每个访问服务器的人都可以看到存储中的所有事件、标记等

我的下一步是创建用户的概念,将某些事件和标记与某些用户关联,并且只允许经过身份验证的用户访问存储中自己的数据


我正在寻找一个最佳实践或最佳实践食谱的例子来设置我的应用程序来做到这一点。我发现了几个允许身份验证的emberjs插件,但这只解决了部分问题

你的问题有点笼统,所以这个答案有点笼统,但希望能有所帮助

让用户立即登录到您的应用程序的概念引入了以下要求:

  • 必须为用户提供数据模型
  • 您的后端必须支持身份验证(以便我们知道John Doe实际上就是John Doe),并且必须将EmberJS配置为使用此功能
  • 您的后端必须支持授权(这样我们就知道John Doe有权访问某个事件,并且必须将EmberJS配置为使用此功能
就我个人而言,我没有看过“余烬食谱”,但这里有一些提示:

一般提示:

  • 我发现让你的前端(Ember)和后端(在你的例子中是Sails)完全独立是一条可行之路。这样,你的应用程序在未来可以轻松支持其他前端,如不同的Javascript框架、iOS应用程序、Android应用程序等
  • 这意味着您应该首先决定您的API(后端)将如何处理身份验证和授权,然后确定如何配置Ember以使用您的API。在实践中,了解EmberJS库的存在,然后围绕它们构建后端是很有帮助的
身份验证:

  • 例如,是一个在Ember中处理身份验证的流行库。可以将该库配置为使用OAuth 2.0样式(可能是个好主意)或后端上的一些其他常见身份验证范例进行身份验证
  • 使用ember simple auth,您可以对您的用户进行身份验证(例如,使用用户名和密码),并获得一个“令牌”作为响应。默认情况下,ember simple auth会将令牌存储在浏览器的
    localStorage
    中,以便继续对您的用户进行身份验证
  • 如果用户在没有有效会话的情况下访问受保护的页面等,您可以在此处进一步使用开箱即用功能来处理重定向到登录页面
授权:

  • 对于授权,这应该主要在您的后端处理。ember simple auth基本上会向您的后端提交JSON请求。这需要在某个地方包含用户的身份验证令牌。理想情况下,它应该是HTTP头,但也可以是JSON属性
  • 无论哪种方式,您的API都需要说“用户
    johnDoe
    正在请求访问
    event
    #39。我应该允许吗?”如果是,则您的后端返回资源,可能是一个JSON响应。如果不是,则您的后端仍应返回一个JSON响应,但该JSON响应应为错误的标准格式,因此您的Ember应用程序可以说“哦,我收到了这个错误,而不是JSON,您现在可以显示错误的详细信息(例如“未授权”)给最终用户
摘要:

当然还有其他的方法,但是“余烬方法”——或者更准确地说,“余烬数据方法”“--似乎Ember是您的纯前端,只需向基于JSON的RESTful API提交请求和响应,然后使用标准库处理常见模式,如身份验证、会话、重定向、错误处理等


希望能有所帮助。

对于StackOverflow来说,这是一个有点宽泛的问题。如果您有具体的实现问题,请随时阅读/发布,浏览,然后返回。