Java


Идентификация/аутентификация - часть 2


/** * Around advice (окружает pointcut -
метод фильтра doFilter) * ловящий исключение и отравляющий
запрос пользователя * на страницу с логином если исключение
вылетело */ void around(ServletRequest srequest,
ServletResponse sresponse, EntranceFilter filter)
throws IOException, ServletException : doFilterMethod
(srequest, sresponse, filter) { try { // Выолняем метод proceed(srequest, sresponse,
filter); } catch (AuthenticationException e) { // Сообщение об ошибке если вдруг
понадобиться srequest.setAttribute("error_message",
e.getMessage()); // Отправляем на страницу с логином filter.getConfig().
getServletContext().getRequestDispatcher("login.vm").
forward(srequest, sresponse); } }

}

Заментим что, данное решение имеет следующие преимущества:

  • Используя мощный синтаксис определения pointuct ,мы можем гарантировать, что все контроллеры, которые требуют аутентифицированный доступ, будут доступны только зарегистрированным пользователям. Например, мы можем создать интерфейс AuthnificationNeeded без методов, и определить pointcut, который будет включать себя все классы, реализующие данный интерфейс. Можно определить pointcut, который будет включать в себя все классы в некотором пакете, или, например, по маске имени класса.

  • Действие аспекта будет автоматически распространяться на все новые контроллеры, добавленные в систему в ходе эволюции (при условии, что они будут созданы по определённым в проекте правилам).

  • Никаких изменений кода контроллеров не потребовалось, то есть контроллеры совершенно не осведомлены об особенностях аутентификации приложения.

  • Вся логика аутентификации как генерация исключения, и перенаправление запроса реализована в одном аспекте, а не разбросана по коду системы на разных уровнях.

В тестовой системе попробуйте, как анонимный пользователь, добавить альбом – попытка добавления альбома приведёт вас на страницу авторизации, т.к. добавлять альбом могут только авторизованные пользователи. К сожалению, ссылки удаления альбомов не показываются, т.к. система уже содержит все аспекты которые мы будем реализовывать далее.




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



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