Есть несколько вариантов.Что выбрать, зависит только от вас.Просто объективно взвесьте конкретные преимущества, а недостатки соответствуют вашей собственной ситуации.
Просто объявите <security-constraint>
в web.xml
, который относится к области безопасности, настроенной в servletcontainer.Для вашего веб-приложения вы можете указать шаблоны URL, которые должны быть проверены на предмет входа в систему и / или роли (например, /secured/*
, /app/*
, /private/*
и т. Д.)
Перед Java EE 8К сожалению, вам все еще нужно настроить реальный уровень безопасности в зависимости от сервлетконтейнера.Обычно это описывается в документации к сервлетконайнеру.В случае Tomcat 8 это Realm HOW-TO .Например, область на основе базы данных на основе таблиц пользователей / ролей описана в разделе «JDBCRealm».
Начиная с Java EE 8, наконец, появится стандартный API, основанный на JSR-375 .
Преимущества:
- Относительно быстро ипрост в настройке и использовании.
- Начиная с Java EE 8, наконец-то появился надежный и гибкий стандартный API.
Недостатки:
- Перед Java EE 8,Конфигурация области зависит от контейнера.В Java EE 8 новая спецификация безопасности JSR-375 должна решить эту проблему с помощью JASPIC .
- До Java EE 8 нет детального контроля.
- До Java EE 8 очень спартанский;нет "запомнить меня", плохая обработка ошибок, нет ограничений на основе разрешений.
См. также:
Это позволяет гораздо более детализированный контроль, но вам нужно будет написать весь код самостоятельно, и вы должны действительно знать / понимать, как вы должны реализовать такиефильтр, чтобы избежать потенциальных дыр в безопасности.Что касается JSF, вы можете, например, просто поместить зарегистрированного пользователя в качестве атрибута сеанса с помощью sessionMap.put("user", user)
и проверить в фильтре, не является ли session.getAttribute("user")
null
.
Преимущества:
- Мелкозернистый контроль.
- Полностью не зависит от контейнера.
Недостатки:
- Повторное изобретение колеса;новые функции требуют большого количества кода.
- Для начала вы никогда не будете уверены, что ваш код надежен на 100%.
См. также:
3.Адаптируйте сторонние фреймворки
Например, Apache Shiro , Spring Security и т. Д. Это обычно предлагает гораздо более детальные параметры конфигурации, чем стандартная аутентификация, управляемая контейнером, и вывам не нужно писать какой-либо код для этого, ожидайте страницы входа и некоторой (XML) конфигурации, конечно.
Преимущества:
- Мелкозернистый контроль.
- Полностью не зависит от контейнера.
- Нет повторного изобретения колеса;минимум собственного кода.
- Тщательно разработано и протестировано многими пользователями, поэтому, скорее всего, 100% надежно.
Недостатки:
- Некоторая кривая обучения.
Смотри также: