@vkoshelev_01

Как разграничить доступ пользователей к web ресурсам?

Вечер добрый!

Имеется web-приложение, в которое входит api, например, оно доступно по localhost/api

Имеется 2 вида пользователей user1 и user2, которые должны видеть разные ресурсы, например localhost/app1 и localhost/app2, работа которых сводится к выполнению ajax запросов к api. Приложения app1 и app2 используют исключительно html+css+js, api написано на php

Подскажите, пожалуйста, каким образом можно более правильно разграничить доступ так, чтобы user1 мог ходить на app1 и при попадании на app2 получал сообщение, типа "нет доступа". То же самое и со вторым: user2 - app2

Единственное решение, которое я могу предположить - это на каждой странице с помощью js отправлять запрос на возможность доступа пользователя к ресурсу, но мне кажется, что это решение громоздкое.

Понимаю, что на user1 в app2 может увидеть только структуру страницы, но не данные (т.к. данные разграничены по api_token), но хотелось бы чтобы он и этого не видел.

Спасибо!
  • Вопрос задан
  • 507 просмотров
Решения вопроса 1
shaks
@shaks
Не уверен что понял правильно ваш вопрос, но мне кажется правильным будет следующий вариант:
user1 и user2 обращаются на один и тот же api урл - /api
при обращении, в заголовке они передают версию api.. например так:

для user1
Accept: application/json; version=1.1;
для user2
Accept: application/json; version=1.2;

На бекенде, в роутинге, мы смотрим на какую версию апи пришло обращение. Если на версию такуюто, то подгружаем такоето апи, на версию сякуюто - сякуюто версию апи.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vkoshelev_01 Автор вопроса
Появилась еще идея делать следующим образом: при авторизации user1 получает api_token и ссылку на доступный ресурс и соединяет с текущим хостом, например location.host + '/app1'

И перед загрузкой каждой страницы делает проверку адреса страницы на соответствие маске location.host + '/app1'. Если маска не верна - делает редирект на страницу 404.html
Таким образом user1 не сможет попасть на app2

Это дешевле чем перед выполнением каждой страницы делать запрос к api на проверку доступа к странице.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы