在顯示鏈接/操作之前,模板應該如何查找用戶對特定路線的訪問權限?如何驗證模板中的ACL
考慮到路由已經包含授權角色列表,應該簡單的模板幫助程序/組件查找視圖屬性並驗證訪問?
(類似{{#if has-access-to 'items.new'}}
?)
路線目前 「保護」 用一個簡單的ACL解決方案:
AclRouteMixin
import Ember from 'ember';
var accountTypes = {
1: 'member',
2: 'manager',
3: 'owner'
};
export default Ember.Mixin.create({
beforeModel: function beforeModel(transition) {
this._super(transition);
var accountType = this.get('session.accountType');
var role = accountTypes.hasOwnProperty(accountType) ? accountTypes[accountType] : 'unknown';
if (this.get('roles') && !this.get('roles').contains(role)) {
transition.abort();
this.transitionTo('unauthorized');
}
}
});
路線
export default Ember.Route.extend(AuthenticatedRouteMixin, AclRouteMixin, {
roles: [ 'manager', 'owner' ]
});
EDIT
由於服務器知道的權限它比試圖複製的授權邏輯容易得多包括policy
對象(或每個實體屬性)。
[這] (https://www.youtube.com/watch?v=KzasJuhsTSs&index=13&list=PLLUBPLc28H8c8ihVHkYeRHe8OiB8P5WL0)可能與您有關 – MilkyWayJoe 2014-10-29 21:02:55
感謝@MilkyWayJoe,視頻真的很有幫助。服務器已經實現了ACL和其他權限管理,就像它在視頻中完成的一樣。 – 2014-11-03 13:21:15