Авторизация и сессия

 
 
 
Сообщения:11
Здравствуйте,занимаюсь J2EE не так давно и есть недопонимание в создании авторизации в сервлете, могли бы Вы помочь?

Собственно саму авторизацию сделал без проблем, но как сделать так, чтобы система определяла активна ли еще сессия пользователя или нет и в связи с этим уже перенаправляла на страницу авторизации пользователя непонятно. (то есть, если пользователь зашел...потом просто закрыл окно в браузере без выхода из акка пользователя...но сессия еще не достигла значения session-timeout, то открыв в браузере окно он продолжает работать с ней без авторизации, в противном случае переход на страницу авторизации).

Могу быть неправ и пока гуглю этот вопрос, но пока безуспешно(( Да, про то, что создать пользователей в Tomcat конфиг файле и потом указать в xml роли, я в курсе и как раз это работает, но это не совсем подходит. Если не сложно, могли бы Вы дать ссылки на связанный с данной тематикой материал, либо подсказать верно ли вообще мыслю и как вообще подобное можно реализовать?
 
 
Сообщения:9820
Samuel777:
Собственно саму авторизацию сделал без проблем, но как сделать так, чтобы система определяла активна ли еще сессия пользователя или нет и в связи с этим уже перенаправляла на страницу авторизации пользователя непонятно.
Ну всего два способа и есть - либо ждать timeout'a, либо пользователь явно нажимает на кнопку logout и тогда задача твоего приложения - удалить сессию вручную с помощью session.invalidate().
Samuel777:
то открыв в браузере окно он продолжает работать с ней без авторизации, в противном случае переход на страницу авторизации
Браузеры могут удалять session cookies (без expiration) при закрытии, но это зависит от браузера и его настроек.
Samuel777:
Да, про то, что создать пользователей в Tomcat конфиг файле и потом указать в xml роли, я в курсе и как раз это работает, но это не совсем подходит.
Это большая редкость - как правило само приложение заведует пользователями. Они хранятся в БД или используются внешние системы для аутентификации с которыми наше приложение сверяется. Часто мы используем готовые фреймворки, например, Spring Security (он правда достаточно сложен).
Изменен:22 дек 2018 13:48
 
 
Сообщения:11
Староверъ:
Ну всего два способа и есть - либо ждать timeout'a, либо пользователь явно нажимает на кнопку logout и тогда задача твоего приложения - удалить сессию вручную с помощью session.invalidate().


Спасибо за подсказку, я так понимаю в целом мысль была верной, но реализация хромала. Как раз применяя session.invalidate() я и хотел сделать изначально, но что то пошло не так, так как по сути у каждой так называемой "страницы" был свой уникальный Id сессии, а сотворение чего то на подобии синглтона сессии с его использованием не увенчалось успехом.
Сейчас пробую тоже самое но уже через cookies.Насчет использования Spring - знаком, но пока только с Core и немного Hibernate, и планирую в дальнейшем расширить это знакомство, но пока J2EE хочу понять и уметь им пользоваться. А в чем сложность Spring Security?
 
 
Сообщения:9820
Samuel777:
но пока J2EE хочу понять и уметь им пользоваться.
Можно и так, хотя J2EE менее популярен сейчас. Но сами технологии, подходы между J2EE & Spring - одинаковы. Так что если понимаешь одно - перейти на другое не сложно. Главное - понять этот самый подход, а не зазубрить как что настраивается.
Samuel777:
А в чем сложность Spring Security?
Во-первых, сама тема Security - сложная. Во-вторых, Spring Security написан уродливо. В-третьих, он очень гибок и поддерживает очень многое, а гибкость - это почти всегда усложнение. Я уже два раза разбирался со Spring Security, и каждый раз через полгода уже ничего не помнил.
 
 
Сообщения:285
Староверъ:
Во-первых, сама тема Security - сложная. Во-вторых, Spring Security написан уродливо. В-третьих, он очень гибок и поддерживает очень многое, а гибкость - это почти всегда усложнение. Я уже два раза разбирался со Spring Security, и каждый раз через полгода уже ничего не помнил.


А ещё официальная документация, которую когда читаешь, вроде всё понятно, а когда "шаг - вправо. шаг - влево", то она вообще ни как не помогает. Приходится либо искать статьи уже тех, кто разобрался, но это может не подходить для своего конкретного случая. Либо глубоко ковыряться в исходниках, чтобы понять, как это работает.

"Любая техническая система должна быть идиотоустойчивой" (с) один из университетских преподов
 
Модераторы:wedens
Сейчас эту тему просматривают:Нет