2013-10-25 5 views
0

У меня есть небольшое приложение Магистра, которое в настоящее время выполняется на странице в Drupal сайте. В настоящее время приложение Backbone работает на странице без аутентификации - любой пользователь может ее увидеть.Как запустить две версии приложения Backbone.js для разных групп пользователей?

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

Сложность состоит в том, что я хотел бы использовать один и тот же код базовой линии для двух типов пользователей, вместо того, чтобы иметь два отдельных базовых приложения. Как бы вы порекомендовали мне это сделать?

Я наивно думал о таком роде вещь:

SearchView = Backbone.View.extend({ 
    render: function() { 
     if (isAdvanced) { 
     //render advanced search options in template 
     } 

    }, 
    runSearch: function() { 
     if (isAdvanced) { 
     // handle advanced options for client-side search 
    } 
}); 

Проблема заключается в том, что код JavaScript, очевидно, будет виден без аутентификации пользователей, и я предполагаю, что они могут установить isAdvanced в их консоли и разблокировать расширенные функции таким образом?

(сам процесс аутентификации обрабатывается Drupal.Если пользователь не аутентифицирован, чтобы видеть страницу B, они автоматически пересылаются на страницу входа в систему. Это не проблема - как организовать код JavaScript является проблемой .)

Нужно ли мне поддерживать две отдельные версии моего базового приложения? Или есть способ, которым я могу поделиться кодом между ними?

Для контекста это не супер-безопасное приложение, но расширенные функции оплачиваются, поэтому я бы предпочел, чтобы это было не тривиально hackable.

+0

Просто уточнить - после загрузки приложения нет дополнительных запросов Ajax, поэтому нет необходимости обрабатывать дополнительную аутентификацию после ее загрузки, только то, что было отправлено клиенту при первой визуализации страницы. – Richard

+0

Чтобы заблокировать такой взлом, отключите эту функцию для не продвинутых пользователей. если пользователь настроен isAdvanced, он получит ошибку от сервера. –

+0

Но как отключить функцию? (Поиск на стороне клиента.) – Richard

ответ

0

Что бы я делал в этом случае, чтобы свести к минимуму события, просто для того, чтобы угадать/свести к минимуму ваш javascript приложения, который был бы самым дешевым решением, только очень мотивированный человек потратил бы время, чтобы пройти через запутанный код.

+0

Я думаю, что это лучшее практическое решение, спасибо! – Richard

0

Я бы предположил, что у вас есть общие функции, определенные в приложении Backbone, а для расширенных функций расширяется общее приложение и добавляются дополнительные функции поверх него. в то время как рендеринг в зависимости от уровня аутентификации представляет собой обычное/расширенное приложение. Благодаря этому все, что вы добавите в обычное приложение, будет доступно для обоих пользователей, и все, что добавлено в расширенное приложение, будет доступно только для продвинутых пользователей.

Смежные вопросы