我有一个Ember应用程序,需要在服务器端进行用户身份验证。经过身份验证(通过登录),应用程序正常运行。该应用程序显示一个注销按钮。按此注销按钮会向服务器发送一条消息,这会导致服务器终止会话,执行一些清理,并发送登录页面以供客户端显示。这一切都很好。
但问题在于:如果用户在注销后点击浏览器的“后退”按钮,他将再次看到该应用并可以与之互动。该应用程序仍然可以向服务器发送消息。目前,服务器将始终通过在会话终止时发回登录页面来进行响应。如何让ember转换到从服务器收到的这个登录页面?用户在注销后仍然可以返回正在运行的应用程序(至少在客户端)这一事实会引起一些混乱。
处理此问题的推荐方法是什么?无论如何,当用户点击退出按钮时,Ember应用程序是否结束?也许只是在用户注销时禁用浏览器的后退按钮(如何在Ember中执行此操作?)?
答案 0 :(得分:1)
如果会话已登录,您可以检查每条路线是否在此类路线的激活挂钩中。
如果您要设置变量loggedIn
,则此处为true。
App.PostRoute = Ember.Route.extend({
activate: function() {
if (!loggedIn){
this.tansitionTo('login');
}
}
});
如果您想从历史记录中完全删除PostRoute,可以使用replaceWith而不是transitionTo
。
。或使用这些进行身份验证ember-auth或simple-auth