Я работаю с серверным приложением Java корпоративного уровня, и мне нужно создать аутентификацию пользователя на основе токенов. Внешний интерфейс использует PHP и взаимодействует с серверной частью Java через SOAP.
Я думал об использовании HashBiMap от Guava, чтобы помочь мне с проблемой. Это было бы полезно для меня, потому что я мог бы генерировать токены UUID в качестве ключей и хранить объекты пользователя в качестве значений в статическом HashBiMap. Когда пользователь впервые успешно входит в систему, он будет добавлен в HashBiMap, и в ответе на вход будет возвращен сгенерированный токен UUID. Последующие запросы SOAP для того же пользователя будут выполняться только с использованием токена.
Проблема, с которой я столкнулся сейчас, заключается в том, что мне нужна какая-то логика вытеснения, которая позволила бы вытеснять эти токены после 30 минут бездействия. В моем исследовании выяснилось, что HashBiMap изначально не поддерживает выселение, как MapMaker делает.
Есть ли у кого-нибудь рекомендации о том, как я могу использовать HashBiMap и поддерживать выселение за бездействие? Если этот подход не идеален, я открыт для других стратегий.
Обновление:
Я думаю, что мне нужно использовать HashBiMap, потому что я хочу иметь возможность искать объект пользователя на карте и получать его уже существующий токен, если пользователь все еще находится на карте. Например, если пользователь закрывает свой браузер в течение 30-минутного окна, а через несколько минут возвращается и снова входит в систему, мне нужно проверить, существует ли уже пользователь на карте, чтобы я мог вернуть его существующий токен (поскольку он технически все еще в силе).
User
вUUID
. Кажется, что для того, что вы описали, одного сопоставленияUUID
сUser
было бы достаточно. - person ColinD   schedule 28.07.2011