Javascript: Как показать скрытые div в зависимости от роли безопасности

0

Я использую JQuery и AngularJS. Одним из требований было показать/скрыть divs и другие виджеты на основе роли пользователя входа в систему. Я реализовал решение, как показано ниже:

  • На загрузке страницы получите роль входа в систему пользователя и сохраните ее как глобальную переменную в javascript
  • Показать полную страницу
  • Скрыть divs, используя простые операторы if, основанные на роли безопасности
    Это лучший способ? Разве нет рамки или библиотеки для этого? Разве AngularJS не может помочь?

Кстати, я понимаю, что безопасность на стороне сервера является обязательной, несмотря на то, что пользователь виджета может видеть в браузере.

Теги:
security

2 ответа

0

Вы могли бы посмотреть на что-то вроде форм с угловой схемой. Это берет объект JSON и отображает его с использованием шаблонов в формате HTML.

Другим подходом было бы использовать шаблон для каждого виджета, а затем проверить роль до получения шаблона. Если шаблон не будет получен, ваши пользовательские теги будут пустыми и не будут содержать контент.

if isAuthorized
    get template
else
    do nothing or remove the element (your call) 

Преимущество первого заключается в том, что ваша разметка создается на основе данных на стороне сервера и, таким образом, имеет дополнительное преимущество для обеспечения большей безопасности. Второй же будет работать.

0

Обратите внимание, что вы можете изменить НИЧЕГО в javascript, включая глобальную переменную и код javascript на стороне клиента, поэтому ваш сервер НЕ МОЖЕТ ПРЕВРАТИТЬ КЛИЕНТ.

Это хорошо, если вы хотите показать/скрыть div на основе глобальной переменной, но ваш сервер НИКОГДА не должен использовать эту глобальную переменную для определения разрешения пользователя. И для скрытого div, вы НЕ должны заполнять их данными из БД, поэтому даже когда клиент меняет CSS, они не могут видеть данные, которые не разрешены. Не говоря уже о том, что они всегда могут проверять сеть, чтобы узнать, что возвращается в JSON.

Однако вам не нужно хранить глобальную переменную. Если ваш пользователь выполняет правильную проверку подлинности, вы должны проверить его личность для каждой транзакции (каждый запрос ajax) и вернуть только соответствующий контент. В Angular view вы можете сделать ng-if если данные существуют только.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню