2014-01-23 3 views
1

Есть ли способ узнать , какие пользователи в настоящее время подписано в с приложением Playframework с использованием Secure Social API? Если да, то как?SecureSocial для Запросы в настоящее время зарегистрированных пользователей

В общем случае где и как в настоящее время зарегистрированы зарегистрированные пользователи в приложении Play/SecureSocial?

ответ

3

SecureSocial отслеживает аутентифицированных пользователей, используя плагин AuthenticatorStore. Реализация по умолчанию использует кеш воспроизведения, но вы можете создать свой собственный. Если вы создадите свою собственную реализацию, вы можете решить, где сохранить сеанс, а затем запросить, чтобы узнать, что вам нужно.

Другим подходом могло бы стать создание EventListener. SecureSocial запускает события входа и выхода из системы. Вы можете сохранить эти события, и это также даст вам активных пользователей. Однако вы можете потерять события выхода в этом случае, если пользователь просто закрывает браузер. Я бы сказал, что полагаться на AuthenticatorStore более надежно, потому что у аутентификаторов есть срок действия, который вы можете проверить при запуске запроса.

+0

Означает ли это, что с помощью AuthenticatorStore по умолчанию пользователи могут быть выведены из системы, если истекает срок их кэширования? AFAIK как для реализации по умолчанию, так и для memcached удаляет старые записи, если у них заканчивается память. – OlivierBlanvillain

+0

Да, записи должны истечь после истечения абсолютного тайм-аута.Что касается удаления записей из-за низкой памяти или какого-либо другого ограничения конфигурации, вы также правы, это может произойти и должно быть принято во внимание, если кеш используется много. – Jorge

1

Вы используете Play Framework 2?

Если да, то вы можете создать свой собственный UserService, как описано в документации: http://securesocial.ws/guide/user-service.html

Вы можете затем реализовать find(Identity) (в Scala), или doFind(Identity) (в Java) метод и выбрать, как войти и магазин пользователи.

Фактически, в этих методах вы должны регистрировать пользователя в зависимости от того, как он подключился (Twitter, Facebook ...).

Вы также должны реализовать метод save(Identity) (в Scala) или doSave(Identity), чтобы сохранить пользователя, когда он создает учетную запись или регистрируется в первый раз в определенной социальной сети.

Если вы предоставляете возможность входа с именем пользователя/password, вы должны реализовать метод findByEmailAndProvider (в Scala) или doFindByEmailAndProvider.

Итак, если вы контролируете способ подключения пользователей к вашему сайту, вы можете хранить (и извлекать) подключенных пользователей.

+0

Спасибо Zarkus. Да, я использую Play 2. Где вы посоветуете хранить или сохранять подключенных пользователей? Redis? MongoDB? HttpSession? – balteo

+0

Все зависит от вашей архитектуры. Я предполагаю, что если вы уже используете базу данных (SQL или NoSQL, MySQL или MongoDB или даже Redis), вы должны продолжать использовать ее. Но если вы этого не сделаете, предпочтите что-то вроде системы кеша с MemCache, например, из-за неизменности и безгражданности характеристик Play (поэтому не используйте сеанс или хранилище приложений). Надеюсь, это вам поможет;) – Zarkus13

+0

Еще одна из моих проблем - это то, что произойдет, если пользователь не выйдет из системы, но покинет приложение: они все еще будут жить в Redis/Memcache, и если да, то как долго? – balteo

Смежные вопросы