我正在使用Ember.Js来创建一个Web应用程序,我在MongoDb中有User集合,在User集合中有一个Role属性可以带两个值," admin"或"客户"。 我想做的是以下内容: 当有人登录时,他将被重定向到管理仪表板或客户界面,具体取决于他的角色。
我怎样才能做到这一点?什么是最佳做法? 这是一个好主意,或者我应该为管理员创建一个集合,为客户创建另一个集合?
答案 0 :(得分:3)
我个人会使用应用程序路由afterModel
挂钩。
export default Ember.Route.extend({
model: function(){
//I DK if you use Ember Data. I don't but this could be a store lookup.
return this.userService.getCurrentUser()
},
afterModel: function(resolvedModel, transition){
var user = resolvedModel;
if(user.role === 'ADMIN'){
this.transitionTo('admin-dashboard');
}else{
this.transitionTo('customer-interface');
}
}
});
然后,您可以拥有不同的菜单结构,分别只链接到管理员和客户路线,或两者兼而有之。我还有一个mixin,我所有其他仅管理员路线都延伸:
import Ember from 'ember';
export default Ember.Mixin.create({
beforeModel: function(){
var currentUser = this.modelFor('application');
if(currentUser.role !== 'ADMIN'){
//handle this howerver
this.transitionTo('unauthorized');
}
}
});
所以你的admin-dashboard
路线看起来像是:
import Ember from 'ember';
import AdminRoute from 'app_name/mixins/admin-route';
export default Ember.Route.extend(AdminRoute, {});