Эмиссия события 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;

});
Другие вопросы по тегам