EmberJS中的会话结束处理

时间:2013-12-31 03:25:57

标签: ember.js

我有一个Ember应用程序,需要在服务器端进行用户身份验证。经过身份验证(通过登录),应用程序正常运行。该应用程序显示一个注销按钮。按此注销按钮会向服务器发送一条消息,这会导致服务器终止会话,执行一些清理,并发送登录页面以供客户端显示。这一切都很好。

但问题在于:如果用户在注销后点击浏览器的“后退”按钮,他将再次看到该应用并可以与之互动。该应用程序仍然可以向服务器发送消息。目前,服务器将始终通过在会话终止时发回登录页面来进行响应。如何让ember转换到从服务器收到的这个登录页面?用户在注销后仍然可以返回正在运行的应用程序(至少在客户端)这一事实会引起一些混乱。

处理此问题的推荐方法是什么?无论如何,当用户点击退出按钮时,Ember应用程序是否结束?也许只是在用户注销时禁用浏览器的后退按钮(如何在Ember中执行此操作?)?

1 个答案:

答案 0 :(得分:1)

如果会话已登录,您可以检查每条路线是否在此类路线的激活挂钩中。

如果您要设置变量loggedIn,则此处为true。

App.PostRoute = Ember.Route.extend({
  activate: function() {
    if (!loggedIn){
      this.tansitionTo('login');
    }
  }
});

如果您想从历史记录中完全删除PostRoute,可以使用replaceWith而不是transitionTo

。或使用这些进行身份验证ember-authsimple-auth