Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring список online пользователей / 16 сообщений из 16, страница 1 из 1
11.10.2013, 13:17:47
    #38424377
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring список online пользователей
Добрый день!
Хочу получить список всех пользователей кто сейчас online

для этого добавляю в securityContext.xml

Код: java
1.
<beans:bean id="sessionRegistry" class="org.springframework.security.core.session.SessionRegistryImpl"/>


В

коде делаю вызов :
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@Controller
public class UserController {

   @Autowired
    private SessionRegistryImpl sessionRegistry;

...

  List<Object> principals = sessionRegistry.getAllPrincipals();


Массив пустой !

как получить список всех активных пользователей ?


И еще если я хочу ограничить доступ - один пользователь - одна сессия -

беру и добавляю securityContext.xml
Код: java
1.
2.
3.
4.
   <beans:bean id="sas" class="org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy">
       <beans:constructor-arg name="sessionRegistry" ref="sessionRegistry" />
       <beans:property name="maximumSessions" value="1" />
   </beans:bean>



но не работает по той же причине !?
...
Рейтинг: 0 / 0
11.10.2013, 18:59:32
    #38424899
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring список online пользователей
По поводу первого не скажу, а второе вроде как решается настройкой <concurrency-control> в <http> конфига Spring Security - дока : прописываем слушатель org.springframework.security.web.session.HttpSessionEventPublisher в web.xml и добавляем <concurrency-control max-sessions="1"/> в раздел <http> конфига.
...
Рейтинг: 0 / 0
13.10.2013, 11:29:49
    #38425540
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring список online пользователей
может есть еще способы получения списка online пользователей?
...
Рейтинг: 0 / 0
13.10.2013, 11:35:50
    #38425541
GregTk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring список online пользователей
Atum1,
Я знаю только способ через HttpSessionListener
...
Рейтинг: 0 / 0
13.10.2013, 11:47:09
    #38425549
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring список online пользователей
GregTk,

Спасибо, это я знаю :)

я имею ввиду spring и то что в нем есть из коробки .
...
Рейтинг: 0 / 0
15.10.2013, 23:06:14
    #38428896
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring список online пользователей
HttpSessionListener через него можно понять когда создалась сессия и когда была закрыта, можно навесить счетчик , но вот как их события получить Principal ?

есть только getId - session id - по этому ключу хочется и создать мапу для Principal'ов активных пользователей, в которую их класть по создании сессии и удалять при закрытии.

Что хочется иметь в статистики : getUserPrincipal name , роли, а так же getRemoteUser и getRemoteAddr
...
Рейтинг: 0 / 0
15.10.2013, 23:39:27
    #38428923
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring список online пользователей
Atum1,

ну создай табличку в БД, на старте сессии - пихай туда всю инфу, на клоуз сессии - удаляй. Инфу извлекай посредством sql, и в хвост и в гриву.)
...
Рейтинг: 0 / 0
16.10.2013, 00:38:25
    #38428990
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring список online пользователей
Есть только маленький нюансик: если дефолтное время жизни сессии 40 минут, то сессионный листенер получит событие окончания сессии через 40 минут, то есть фактически при таком подходе мы получаем не совсем список людей онлайн. Однако других способов без каких-то штучек а-ля комет нет.
...
Рейтинг: 0 / 0
16.10.2013, 09:39:11
    #38429156
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring список online пользователей
IDVsbruckЕсть только маленький нюансик: если дефолтное время жизни сессии 40 минут, то сессионный листенер получит событие окончания сессии через 40 минут, то есть фактически при таком подходе мы получаем не совсем список людей онлайн. Однако других способов без каких-то штучек а-ля комет нет.

Хочется без таблицы - одной мапой все решить.

Имея таблицу - нужно будет : ее чистить при старте сервера, итд.

Да сессия 40 минут и все это время пользователь как бы online.

можно конечно , в таблице пользователей добавить поле - флаг - online и при логине его выставлять в true , потом сбрасывать.

но тоже ,сне не очень нравится .

Буду разбираться с SessionRegistryImpl
...
Рейтинг: 0 / 0
16.10.2013, 13:30:49
    #38429602
Sherst
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring список online пользователей
...
Рейтинг: 0 / 0
17.10.2013, 10:35:43
    #38430829
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring список online пользователей
Atum1IDVsbruckЕсть только маленький нюансик: если дефолтное время жизни сессии 40 минут, то сессионный листенер получит событие окончания сессии через 40 минут, то есть фактически при таком подходе мы получаем не совсем список людей онлайн. Однако других способов без каких-то штучек а-ля комет нет.

Хочется без таблицы - одной мапой все решить.

Имея таблицу - нужно будет : ее чистить при старте сервера, итд.

Да сессия 40 минут и все это время пользователь как бы online.

можно конечно , в таблице пользователей добавить поле - флаг - online и при логине его выставлять в true , потом сбрасывать.

но тоже ,сне не очень нравится .

Буду разбираться с SessionRegistryImpl


есть такая прелестная штука - redis. там есть ttl и все что нужно. идеально решит задачу, не нужно никаких листнеров
добавляете фильтр, который при очередном реквесте продлевает ttl на какое-то время. и все.
...
Рейтинг: 0 / 0
18.10.2013, 10:48:51
    #38432433
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring список online пользователей
Penkov Vladimirесть такая прелестная штука - redis. там есть ttl и все что нужно. идеально решит задачу, не нужно никаких листнеров
добавляете фильтр, который при очередном реквесте продлевает ttl на какое-то время. и все.

можно ссылок полезных ? и примеров? :) буду признателен
...
Рейтинг: 0 / 0
18.10.2013, 11:41:14
    #38432524
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring список online пользователей
google в помощь, по редису документации полно
...
Рейтинг: 0 / 0
20.10.2013, 23:32:23
    #38434877
drsm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring список online пользователей
как-то так
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
<security:session-management session-fixation-protection="newSession" >
	<security:concurrency-control max-sessions="50" />
</security:session-management>		
</security:http>

+ 

@Autowired
private SessionRegistry sessionRegistry;
...
Рейтинг: 0 / 0
20.10.2013, 23:37:43
    #38434881
rdm
rdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring список online пользователей
...
Рейтинг: 0 / 0
20.10.2013, 23:40:48
    #38434883
rdm
rdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring список online пользователей
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring список online пользователей / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]