Каков наиболее рекомендуемый способ?
В Java EE 6, на мой взгляд, будет использоваться (100) * управляемый контейнер безопасность с Realm
, указывающим на базу данных SQL.
Что вы практикуете и что предпочитаете?
До Java EE6, я раньше предпочитал доморощенный механизм входа в систему, потому что я хотел бы иметь полный контроль над входом в систему.Большинство контейнеров, в частности, не позволяют фильтровать j_security_check
запросов.Начиная с Java EE 6 можно осуществлять программный вход в систему с помощью нового метода HttpServletRequest#login()
, поэтому этот недостаток исчез.
Какие еще варианты у нас есть?
Ну, я уже упомянул два основных способа.Помимо некоторых фреймворков, таких как Spring Security, в действительности нет других вариантов.Управляемая контейнером защита, в свою очередь, предлагает несколько способов входа в систему, такие как HTTP BASIC-аутентификация (которая просто показывает встроенное в браузер всплывающее окно JavaScript-подобного входа), аутентификация на основе форм (с использованием HTML-формы, отправляющей j_security_check
) и новыйпрограммный логин.
Какой будет самый безопасный?
Все в равной степени безопасны.Безопасность на практике зависит от вашего собственного кода и настроек конфигурации.