Как ограничить доступ к экрану в веб-приложении..?

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

Я знаю, что я не первый, кто делает это, поэтому должна быть какая-то стандартная практика. Так что, если кто-то знает какую-либо библиотеку или какой-либо способ сделать это, пожалуйста, дайте мне знать.

Спасибо.

1 ответ

Решение

Отказ от ответственности - я не знаю, как это будет переводиться на Clojure, поскольку я никогда не использовал его.

Обычно вы украшаете методы, которые отвечают на представления, с помощью обработчика авторизации. Этот обработчик знает, как общаться с вашим бэкэндом аутентификации. Он берет идентификатор пользователя (который может быть идентификатором пользователя / именем пользователя и т. Д.) Из текущего контекста и запрашивает у бэкэнда авторизацию пользователя для запрошенного представления.

Если это проходит, вид показан.

Если он отклонен, то на основании бизнес-правил (и правил безопасности) предпринимаются действия. Это может быть так же просто, как дружеское "К сожалению, вам здесь не разрешено"; для регистрации действия и затем завершения сеанса пользователя.

Если ваше приложение имеет ограниченный набор конечных точек (URL), вы можете создать статическую карту конечных точек для пользователей и использовать ее в качестве списка управления доступом (ACL). Тем не менее, в большинстве современных приложений ACL контролируется для целого ряда объектов, и конечные точки (URL-адреса) не ограничены, поскольку они являются динамическими. Например /inventory/product/1, /user/admin/3, так далее.

Обновить:

Эта ссылка предоставляет визуальную диаграмму для шаблона декоратора.

Обновление 2:

Библиотека авторизации предоставляет несколько помощников, которые будут выполнять проверки авторизации ("разрешено ли просматривать этому пользователю"), но реализация в коде оставлена ​​на усмотрение отдельного приложения.

Обычно вы используете одну или несколько библиотек аутентификации (например, клятва); но часть авторизации оставлена ​​на усмотрение вашей реализации.

Быстрый Google привел меня к обеспечению безопасности веб-приложений Clojure с песочницей, которая должна быть более актуальной для вас.

Другие вопросы по тегам