所以,在我的ApplicationRoute
我加载一个模型来加载一些整个应用程序通用的数据。工作流程如下:
App.ApplicationRoute = Ember.Route.extend({
model: function() {
return this.store.find('config');
},
actions: {
error: function(error, transition) {
var self = this,
renderErrorPage = function(template, disableMenu) {
self.render(template, {
into: 'application'
});
if(disableMenu) {
$('.menu > a').addClass('disable-menu'); // disable menu links
}
},
metadata = {
'timeout': {
action: function(error, transition) {
BootstrapDialog.alert({message: 'Request Timeout!'});
}
},
'forbidden': {
action: function(error, transition) {
self.transitionTo('companies');
}
},
'unauthorized': {
action: function(error, transition) {
window.location.replace(error.responseJSON.redirect_url);
}
},
'bad gateway': {
action: function(error, transition) {
renderErrorPage('error', true);
}
},
'internal server error': {
action: function(error, transition) {
renderErrorPage('error', true);
}
},
'not found': {
action: function(error, transition) {
renderErrorPage('404', false);
}
}
};
if(error.statusText.toLowerCase() in metadata) {
metadata[error.statusText.toLowerCase()].action(error, transition);
}
}
}
});
因此,如果用户未登录,则会收到unauthorized
401错误,并将其重定向到登录页面,如果他已登录但仍无法访问此应用,他收到forbidden
403错误,只是转移到/#/companies/
,他将注册他的公司,然后可以访问完整的应用程序。
我的问题是:由于模型无法加载,因此没有发生向companies
的转换,我不知道如何修复它。
答案 0 :(得分:0)
在我看来,您应该找到一种不同的加载配置方式,而不是通过对经过身份验证的API的请求(或者至少为不需要身份验证的路由提供开放版本,例如此错误页面)。您可以通过使用
逃脱if (isAuthenticated) {
return this.store.find('config');
}
...然后在身份验证过程中的某处设置isAuthenticated
。