Мое приложение имеет разные представления для разных ролей, таких как (администратор или обычный пользователь). Я не знаю, как реализовать его с помощью extjs4 MVC. В примерах документации extjs4 считается, что у приложения есть только одна роль, как у обычного пользователя, поэтому они создают один файл app.js, который управляет приложением, но если у приложения много ролей, я не знаю, как реализовать разные представления для разных пользователей.
Один дело в том, что у меня есть два файла app.js в приложении, и после того, как я получаю роль пользователя на сервере, я загружаю соответствующий файл app.js, чтобы использовать соответствующие представления, контроллеры, модели, хранилища и т. д.
Это правда?
Представления на основе ролей в extjs4 mvc
Ответы (1)
Это довольно стандартный вопрос, который возникает так много раз, и ответ всегда один и тот же:
- Контроль доступа принадлежит серверу, где ни один пользователь не может им манипулировать.
- Просто не предоставляйте представление/модель/контроллер пользователю, к которому у него нет доступа.
Имея это в виду, не имеет значения, есть ли у вас одно приложение или десять.
И поскольку контроль доступа не относится к внешнему интерфейсу, в ExtJS нет реализации.
Обновить -> Скрыть элементы пользовательского интерфейса
Готовым подходом будет использование Ext.direct
. Это предоставляет приложению API, который может быть изменен на основе пользовательского доступа текущего пользователя, а затем может быть проверен внешним интерфейсом.
Как:
Создайте API на основе сеанса пользователя и проверьте на стороне клиента, например
if(Booking) {
if (Booking.Create) {
// has access
}
}
или как одна строка
{
xtype: 'button',
hidden: !(Booking && Booking.Create)
}
Это всего лишь простой пример того, как легко это можно сделать!
обновить Эта ссылка помог оп
person
sra
schedule
18.02.2013
Из вашего ответа я заметил, что у меня должно быть два файла app.js для моего приложения на стороне сервера. Это правда?
- person taher; 18.02.2013
@taher, это был бы вариант, если у вас есть только две роли. Но если у вас больше ролей, возможно, вам придется переосмыслить свой дизайн. Значение: возможно, вы не сможете использовать только предварительно скомпилированные библиотеки. Ваш сервер должен будет раздавать определенные библиотеки только пользователям с соответствующим доступом или объединять их во время входа пользователя в систему или предоставлять полное приложение, которое скрывает элементы пользовательского интерфейса для частей, к которым у пользователя не было доступа.
- person sra; 18.02.2013
Спасибо. На случай, если у приложения больше ролей, можете ли вы привести пример сокрытия элементов пользовательского интерфейса для частей, к которым у пользователя не было доступа?
- person taher; 18.02.2013
Спасибо @sra за ваш ответ, но я не знаю, что такое Booking в вашем коде! Вы можете объяснить об этом?
- person taher; 18.02.2013
@taher Это пример API
- person sra; 18.02.2013
спасибо за вашу помощь, пожалуйста, импортируйте эту ссылку в свой ответ, чтобы быть полезным ibm.com/developerworks/web/library/wa-aj-streamline/index.html
- person taher; 21.02.2013