繁体   English   中英

在ember-simple-auth身份验证后触发向“加载”路由的转换

[英]Trigger transition to 'loading' route after ember-simple-auth authentication

我想向登录到我的应用程序的用户显示“正在加载...”动画。

如果模型返回了承诺,Ember会自动过渡到“加载”路线(如果有),因此它有机会显示“加载”模板,直到服务器响应为止。

现在,我有了一个登录表单,其中Submit触发了我的控制器中的“身份验证”操作(在LoginControllerMixin中定义)。 灰烬似乎没有将其视为应许,因此应用程序不会过渡到“加载”路线。

也许有一种方法可以使用简单身份验证会话状态,但是我无法弄清楚

任何帮助,将不胜感激

这并不是说它不是一个承诺,而是它不是过渡的一部分。 如果要修改身份验证混合,则可以手动将其转换为加载路由,然后开始promise,然后转换为目标后身份验证。 老实说,如果这样做值得的话,我会感到惊讶,除非您的后端认证速度真的很慢。

您将身份验证逻辑更改为以下内容:

this.transitionTo('loading').then(function(){      
  authenticateLogicCall().then(function(){
    this.transitionTo('authenticatedResource');
  });
});

我认为加载路由仅在发生过渡且框架正在等待目标路由的model钩返回的promise解析时才能很好地工作。 但是,Ember Simple Auth的LoginControllerMixin的authenticate操作不是这种情况。 要显示加载消息,您可以通过以下方法简单地覆盖该authentication操作:

export default Ember.Controller.extend(LoginControllerMixin, { actions: { authenticate: function() { var _this = this; this.set('loading', true); this._super().then(function() { _this.set('loading', false); }, function() { _this.set('loading', false); }); } } });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM