Java


Авторизация


Наиболее интересная часть решения. Идеальное решение авторизации должно быть слабо связанно со всей системой, и должно реализовывать два различных типа авторизации:

  • Пост-проверка – запрет не авторизованных действий. Например, запрет удаления альбома или запрет на чтение поля объекта.

  • Пред-проверка – оповещение о том, что конкретное действие не разрешено. Например, слой отображения должен быть знать отображать ли ссылку «удалить» около альбома, то есть можно ли удалить данный альбом.

Решение в терминах АОП мы разберём последовательно для различных типов.

Пост-проверка

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

  • Чтение – вызов любых методов начинающихся с get (по умолчанию считаем, что наша модель удовлетворяет требованиям JavaBeans по именованию методов доступа к данным класса).

  • Добавление – добавление нового альбома. В нашей системе это метод addAlbum в классе AlbumList.

  • Удаление – удаление альбома. В нашей системе это метод removeAlbum в классе AlbumList.

Т.к. мы не будем реализовывать возможность редактирования имени альбома, то методы изменения данных нас не интересуют, хотя в реальных системах этот тип доступа, безусловно, нуждается в авторизации. Перед вызовом методов каждого типа мы будем обращаться к системе авторизации для проверки. Посмотрим более детально на ход работы системы:

На первом шаге пользователь запрашивает страницу /view. Запрос с начала поступает на созданный фильтр EntranceFilter, после чего обрабатывается сервлетом. Так как запрос без параметров, то сервлет ничего не делает и направляет запрос на слой отображения view.vm. Скрипт отображения вынимает из сессии список альбомов и выводит их названия.




Начало  Назад  Вперед



Книжный магазин