RedisOperationsSessionRepsitory only deletes once

Previously RedisOperationsSessionRepository incorrectly:

* Deleted the session
* Added the session
* Set the expiration to be 0

This commit ensures that if the expiration is 0 that the sesson is only
deleted.

Fixes gh-292
This commit is contained in:
Rob Winch
2015-11-16 10:52:39 -06:00
parent 5fbf333c61
commit 8a5cba914b
2 changed files with 25 additions and 7 deletions

View File

@@ -85,8 +85,12 @@ final class RedisSessionExpirationPolicy {
String sessionKey = getSessionKey(keyToExpire);
expireOperations.expire(fiveMinutesAfterExpires, TimeUnit.SECONDS);
redis.boundValueOps(sessionKey).append("");
redis.boundValueOps(sessionKey).expire(sessionExpireInSeconds, TimeUnit.SECONDS);
if(sessionExpireInSeconds == 0) {
redis.delete(sessionKey);
} else {
redis.boundValueOps(sessionKey).append("");
redis.boundValueOps(sessionKey).expire(sessionExpireInSeconds, TimeUnit.SECONDS);
}
redis.boundHashOps(getSessionKey(session.getId())).expire(fiveMinutesAfterExpires, TimeUnit.SECONDS);
}