Ember: 有用户登录的应用

Ember: Applications with user login

我应该如何为客户登录的应用程序构建路由器?

应用程序需要登录才能访问以下路径:Books、Book、Chapters、ChapterCategory、Chapter。

路线“关于”和“主页”不需要用户登录。

App.Router.map(function() {
  this.resource('application', function() {
    this.resource('home');
    this.resource('books');
    this.resource('book', {path: '/:book_id'});
    this.resource('chapters');
    this.resource('chapterCategory', {path: 'chapter/:chapter_type'});
    this.resource('chapter', {path: '/:chapter_id'}); 
    this.resource('about', {path: '/aboutus' });
  });
  this.route('catchall', {path: '/*wildcard'});
});

当用户登录时,他的名字被添加到在应用程序模板中实现的主菜单的右侧。因此,应用程序路由正在提取用户信息。如果用户未登录,则应用程序模型不会 return 任何东西。

问题:

  1. 定义模型时有什么特殊注意事项 在申请途径中?

  2. 如果应用程序路由不尝试提取用户信息,应用程序模板如何更新导航菜单中显示客户名称的应用程序模板?

  3. 如何在您自己的 Ember 应用程序中实现用户登录?是否创建一个User路由,并在其下嵌套需要登录的路由?

谢谢

我建议阅读 Authentication with EmberJS, or looking at Ember Torii and Ember Simple Auth add-on

回答您的问题:

  1. 正确地进行身份验证,您将在路由和控制器中注入一个会话对象。
  2. 您将拥有一个您的视图可以使用的会话对象。
  3. 您可以保持简单,只实现顶级登录路由,但如果您确实需要,您的路由路径可以是“/user/login”。

在通过多个版本使用 Ember Simple Auth 之后,我倾向于根据文章从头开始实施 auth,因为您最终使用的运行时代码要少得多,您拥有完全控制权,您可以支持如果需要,到不同 API 端点(例如第三方服务)的多个会话,如果您想根据您的应用程序要求支持 sensitive/high-value/high-risk 操作的特权升级,则减少战斗。