Эмиссия события Backbone-Aura
Я недавно начал изучать основы и ауру и попробовал простое приложение, используя оба. У меня есть три виджета, скажем, A, B и C. Теперь A и B публикуют события (используя sandbox.emit), а C подписывается на них (используя sandbox.on). "A" публикует "A.eventA", а "B" публикует "B.eventB", скажем. Я попытался опубликовать "B.eventB" из виджета A, и он все еще работает. Итак, есть ли способ, с помощью которого виджеты не могут публиковать какие-либо события, кроме собственных событий? (Или это разрешенное / ожидаемое поведение?)
Благодарю.
1 ответ
Вы спрашиваете о безопасности. Дизайн Ауры заключается в том, чтобы иметь фасад, обеспечивающий безопасность. Вместо того, чтобы поразить посредника publish
прямо, вы называете это через фасад. Фасад сначала проверяет, есть ли у вас разрешение на публикацию.
Вот пример из https://gist.github.com/addyosmani/1518268 который показывает безопасность для subscribe
, Вы могли бы использовать что-то подобное для publish
,
define([ "../aura/mediator" , "../aura/permissions" ],
function (mediator, permissions){
var facade = facade || {};
facade.subscribe = function(subscriber, channel, callback){
// Note: Handling permissions/security is optional here
// The permissions check can be removed
// to just use the mediator directly.
if(permissions.validate(subscriber, channel)){
mediator.subscribe( channel, callback );
}
}
facade.publish = function(channel){
mediator.publish( channel );
}
return facade;
});