Как ограничить доступ к экрану в веб-приложении..?
Я разработал приложение, и до сих пор я успешно ограничивал доступ к экрану, не показывая / не скрывая пункты меню или кнопки для определенного экрана. Но теперь проблема в том, что пользователь может получить доступ к экрану, когда набирает URL в адресной строке.
Я знаю, что я не первый, кто делает это, поэтому должна быть какая-то стандартная практика. Так что, если кто-то знает какую-либо библиотеку или какой-либо способ сделать это, пожалуйста, дайте мне знать.
Спасибо.
1 ответ
Отказ от ответственности - я не знаю, как это будет переводиться на Clojure, поскольку я никогда не использовал его.
Обычно вы украшаете методы, которые отвечают на представления, с помощью обработчика авторизации. Этот обработчик знает, как общаться с вашим бэкэндом аутентификации. Он берет идентификатор пользователя (который может быть идентификатором пользователя / именем пользователя и т. Д.) Из текущего контекста и запрашивает у бэкэнда авторизацию пользователя для запрошенного представления.
Если это проходит, вид показан.
Если он отклонен, то на основании бизнес-правил (и правил безопасности) предпринимаются действия. Это может быть так же просто, как дружеское "К сожалению, вам здесь не разрешено"; для регистрации действия и затем завершения сеанса пользователя.
Если ваше приложение имеет ограниченный набор конечных точек (URL), вы можете создать статическую карту конечных точек для пользователей и использовать ее в качестве списка управления доступом (ACL). Тем не менее, в большинстве современных приложений ACL контролируется для целого ряда объектов, и конечные точки (URL-адреса) не ограничены, поскольку они являются динамическими. Например /inventory/product/1
, /user/admin/3
, так далее.
Обновить:
Эта ссылка предоставляет визуальную диаграмму для шаблона декоратора.
Обновление 2:
Библиотека авторизации предоставляет несколько помощников, которые будут выполнять проверки авторизации ("разрешено ли просматривать этому пользователю"), но реализация в коде оставлена на усмотрение отдельного приложения.
Обычно вы используете одну или несколько библиотек аутентификации (например, клятва); но часть авторизации оставлена на усмотрение вашей реализации.
Быстрый Google привел меня к обеспечению безопасности веб-приложений Clojure с песочницей, которая должна быть более актуальной для вас.