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

时间:2014-07-31 17:21:29

标签: authentication ember.js sails.js

如果这是一个措辞不好或过于基本的问题,请原谅我。我是一位经验丰富的设备程序员,但对于网络应用程序世界来说却是一个新手。

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

目前,该应用程序没有“用户”的概念。没有身份验证,每个去服务器的人都会看到商店中的所有事件,标签等。

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

我正在寻找设置应用程序的最佳做法的最佳做法或食谱示例。我找到了几个允许身份验证的emberjs插件,但这只能解决部分问题。

1 个答案:

答案 0 :(得分:2)

你的问题有些泛泛,所以这个答案会有些泛泛,但希望有用。

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

  • 您必须拥有用户的数据模型
  • 您的后端必须支持身份验证(以便我们知道John Doe真的是John Doe),并且EmberJS必须配置为使用此
  • 您的后端必须支持授权(以便我们知道John Doe有权访问某个特定事件,并且必须配置EmberJS才能使用此功能。

就个人而言,我还没有看过" Ember Cookbook",但这里有一些提示:

一般提示:

  • 我发现让你的前端(Ember)和你的后端(在你的情况下,Sails)完全独立是要走的路。这样,您的应用程序可以在未来轻松支持其他前端,例如不同的Javascript框架,iOS应用程序,Android应用程序等。
  • 这意味着您应首先决定您的API(后端)如何处理身份验证和授权,然后确定如何配置Ember以使用您的API。在实践中,查看EmberJS库的存在并在其周围构建后端很有帮助。

<强>认证

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

<强>授权:

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

<强>要点:

当然还有其他方法可以做,但是&#34; Ember Way&#34; - 或者更准确地说,&#34; Ember Data Way&#34; - 似乎Ember是您的纯前端,只需向基于JSON的RESTful API提交请求和响应,然后使用标准库来处理常见模式,如身份验证,会话,重定向,错误处理等。

希望有所帮助。