Я использую JQuery и AngularJS. Одним из требований было показать/скрыть divs и другие виджеты на основе роли пользователя входа в систему. Я реализовал решение, как показано ниже:
Кстати, я понимаю, что безопасность на стороне сервера является обязательной, несмотря на то, что пользователь виджета может видеть в браузере.
Вы могли бы посмотреть на что-то вроде форм с угловой схемой. Это берет объект JSON и отображает его с использованием шаблонов в формате HTML.
Другим подходом было бы использовать шаблон для каждого виджета, а затем проверить роль до получения шаблона. Если шаблон не будет получен, ваши пользовательские теги будут пустыми и не будут содержать контент.
if isAuthorized
get template
else
do nothing or remove the element (your call)
Преимущество первого заключается в том, что ваша разметка создается на основе данных на стороне сервера и, таким образом, имеет дополнительное преимущество для обеспечения большей безопасности. Второй же будет работать.
Обратите внимание, что вы можете изменить НИЧЕГО в javascript, включая глобальную переменную и код javascript на стороне клиента, поэтому ваш сервер НЕ МОЖЕТ ПРЕВРАТИТЬ КЛИЕНТ.
Это хорошо, если вы хотите показать/скрыть div на основе глобальной переменной, но ваш сервер НИКОГДА не должен использовать эту глобальную переменную для определения разрешения пользователя. И для скрытого div, вы НЕ должны заполнять их данными из БД, поэтому даже когда клиент меняет CSS, они не могут видеть данные, которые не разрешены. Не говоря уже о том, что они всегда могут проверять сеть, чтобы узнать, что возвращается в JSON.
Однако вам не нужно хранить глобальную переменную. Если ваш пользователь выполняет правильную проверку подлинности, вы должны проверить его личность для каждой транзакции (каждый запрос ajax) и вернуть только соответствующий контент. В Angular view вы можете сделать ng-if
если данные существуют только.