Вход в ExtJS 4 приложения, аутентификация и права - PullRequest
4 голосов
/ 03 октября 2011

Я разрабатываю веб-приложение на Ext JS 4, используя новую рекомендованную структуру приложения. Поэтому мне нужно внедрить систему аутентификации и прав. Идея пока что:

  1. Сервер отвечает за обеспечение роли и прав пользователя.
  2. Внешний интерфейс ExtJS должен меняться в соответствии с разрешениями и ролью
  3. Я использую макет карты. Первая вкладка - экран входа в систему, вторая - приложение
  4. В моем контроллере я проверяю, вошел ли пользователь в систему. Если он имеет действительное удостоверение личности, я переключаюсь на вкладку 2. Если нет, он возвращается на вкладку 1.

Моя проблема сейчас в том, что я не уверен насчет части 2 и части 4? Как бы вы реализовали эти два?

Ответы [ 2 ]

3 голосов
/ 03 октября 2011
  • После аутентификации пользователя перенесите параметры конфигурации с сервера в хранилище.Например: Ext.StoreManager.get('ConfigOptionStore').loadData(/* config data returned from server */);
  • Используйте событие beforeRender, чтобы добавить компоненты к вашему текущему представлению (сделайте это в контроллере), например:

    init: function() {
        this.control({
            'myPanel': {
                beforerender: function(cmp, eOpts){
                //place the store in a var for easy access
                var myConfigStore = Ext.StoreManager.get('ActiveUserStore').getAt(0);
    
                //from here you can use add() to add stuff like so:
                if (myConfigStore.get('hasMyButton')) {
                    cmp.add({
                        xtype: 'button',
                        text: 'My Button',
                        action: 'doSomething'
                    });
                 }
                 //etc...
             }
         });
    }
    
  • Убедитесь, что в любой момент времени вы обновляете первую запись хранилища текущими параметрами конфигурации (когда вы loadData загружаете только одну запись).

  • Это должно привести вас в правильном направлении.Обязательно создайте свои начальные представления только с самыми основными компонентами, а затем добавьте пользовательские компоненты на основе конфигурации пользователя.

1 голос
/ 03 октября 2011

Вы можете отправлять уникальный файл «config» пользователя с сервера в зависимости от идентификатора пользователя, поэтому каждый пользователь имеет свою собственную конфигурацию, настроенную так, как он хочет, также вы можете использовать StateManager для сохранения пользовательской конфигурации после того, как она была изменена. Таким образом, интерфейс будет меняться в зависимости от разрешения и роли. Для части 4. Я не вижу никаких проблем, если вы решите пойти с макетом карты ...

setActiveTab( String/Number/Ext.Component card )

EDIT:

Вы можете использовать getState (); из Ext.AbstractComponent для извлечения «состояний» и сохранения, поэтому при следующей загрузке это состояние инициализируется. Это не зависит от файлов cookie или локального хранилища , так что срок его действия не истечет. Вы можете дать пользователю возможность сохранить состояние после того, как он закончит настройку Представлений.

...