private void stuffSession(Session session) { session.put("somelong", 123456L); session.put("someint", 1234); session.put("someshort", (short) 123); session.put("somebyte", (byte) 12); session.put("somedouble", 123.456d); session.put("somefloat", 123.456f); session.put("somechar", 'X'); session.put("somebooleantrue", true); session.put("somebooleanfalse", false); session.put("somestring", "wibble"); session.put("somebytes", bytes); session.put("somebuffer", buffer); session.put("someclusterserializable", new JsonObject().put("foo", "bar")); }
private void checkSession(Session session) { assertEquals(123456L, (long) session.get("somelong")); assertEquals(1234, (int) session.get("someint")); assertEquals((short) 123, (short) session.get("someshort")); assertEquals((byte) 12, (byte) session.get("somebyte")); assertEquals(123.456d, (double) session.get("somedouble"), 0); assertEquals(123.456f, (float) session.get("somefloat"), 0); assertEquals('X', (char) session.get("somechar")); assertTrue(session.get("somebooleantrue")); assertFalse(session.get("somebooleanfalse")); assertEquals("wibble", session.get("somestring")); assertTrue(TestUtils.byteArraysEqual(bytes, session.get("somebytes"))); assertEquals(buffer, session.get("somebuffer")); JsonObject json = session.get("someclusterserializable"); assertNotNull(json); assertEquals("bar", json.getString("foo")); }
private void addStoreSessionHandler(RoutingContext context) { context.addHeadersEndHandler(v -> { Session session = context.session(); if (!session.isDestroyed()) { final int currentStatusCode = context.response().getStatusCode(); session.setAccessed(); if (session.isRegenerated()) { cookie.setValue(session.value()).setPath("/").setSecure(sessionCookieSecure) .setHttpOnly(sessionCookieHttpOnly); sessionStore.delete(session.oldId(), delete -> { if (delete.failed()) { log.error("Failed to delete previous session", delete.cause()); sessionStore.delete(session.id(), res -> { if (res.failed()) { log.error("Failed to delete session", res.cause());
@Override public void start() throws Exception { Router router = Router.router(vertx); router.route().handler(CookieHandler.create()); router.route().handler(SessionHandler.create(LocalSessionStore.create(vertx))); router.route().handler(routingContext -> { Session session = routingContext.session(); Integer cnt = session.get("hitcount"); cnt = (cnt == null ? 0 : cnt) + 1; session.put("hitcount", cnt); routingContext.response().putHeader("content-type", "text/html") .end("<html><body><h1>Hitcount: " + cnt + "</h1></body></html>"); }); vertx.createHttpServer().requestHandler(router).listen(8080); } }
@Override public synchronized void handle(Long tid) { long now = System.currentTimeMillis(); Set<String> toRemove = new HashSet<>(); for (Session session: localMap.values()) { if (now - session.lastAccessed() > session.timeout()) { toRemove.add(session.id()); } } for (String id: toRemove) { localMap.remove(id); } if (!closed) { setTimer(); } }
Session sess = rc.session(); assertNotNull(sess); assertTrue(System.currentTimeMillis() - sess.lastAccessed() < 500); assertNotNull(sess.id()); switch (requestCount.get()) { case 0: rid.set(sess.id()); sess.put("foo", "bar"); sess.destroy(); break; case 1: assertFalse(rid.get().equals(sess.id())); // New session assertNull(sess.get("foo")); rid.set(sess.id()); sess.destroy(); break;
rc.session().put("foo", "foo_value"); rc.response().end(); }); router.get("/1").handler(rc -> { rid.set(rc.session()); assertEquals("foo_value", rc.session().get("foo")); rc.session().destroy(); rc.response().end(); }); router.get("/2").handler(rc -> { rid.set(rc.session()); assertEquals(null, rc.session().<String>get("foo")); rc.response().end(); });
Session sess = rc.session(); assertNotNull(sess); assertNotNull(sess.id()); switch (requestCount.get()) { case 0: rid.set(sess.id()); sess.put("foo", "bar"); break; case 1: assertEquals(rid.get(), sess.id()); assertEquals("bar", sess.get("foo")); sess.put("eek", "wibble"); break; case 2: assertEquals(rid.get(), sess.id()); assertEquals("bar", sess.get("foo")); assertEquals("wibble", sess.get("eek"));
@Test public void testSessionFields() throws Exception { router.route().handler(CookieHandler.create()); router.route().handler(SessionHandler.create(store)); AtomicReference<String> rid = new AtomicReference<>(); router.route().handler(rc -> { Session sess = rc.session(); assertNotNull(sess); assertTrue(System.currentTimeMillis() - sess.lastAccessed() < 500); assertNotNull(sess.id()); rid.set(sess.value()); assertFalse(sess.isDestroyed()); assertEquals(SessionHandler.DEFAULT_SESSION_TIMEOUT, sess.timeout()); rc.response().end(); }); testRequest(HttpMethod.GET, "/", null, resp -> { String setCookie = resp.headers().get("set-cookie"); assertTrue(setCookie.startsWith(SessionHandler.DEFAULT_SESSION_COOKIE_NAME + "=")); int pos = setCookie.indexOf("; Path=" + SessionHandler.DEFAULT_SESSION_COOKIE_PATH); String sessID = setCookie.substring(18, pos); assertEquals(rid.get(), sessID); }, 200, "OK", null); }
/** * The short representation of the session to be added to the session cookie. By default is the session id. * * @return short representation string. */ default String value() { return id(); } }
session.regenerateId(); session.regenerateId();
session.regenerateId(); String returnURL = session.get(returnURLParam); if (returnURL != null) {
@Test public void testLastAccessed2() throws Exception { router.route().handler(CookieHandler.create()); router.route().handler(SessionHandler.create(store)); AtomicReference<Session> rid = new AtomicReference<>(); router.route().handler(rc -> { rid.set(rc.session()); rc.session().put("foo", "bar"); vertx.setTimer(1000, tid -> rc.response().end()); }); testRequest(HttpMethod.GET, "/", 200, "OK"); // accessed() is called after request too assertTrue(rid.get().lastAccessed() - System.currentTimeMillis() < 500); }
session.regenerateId(); String returnURL = session.remove(returnURLParam); if (returnURL != null) {
sessionId.set(rc.session().value()); rc.response().end(); }); assertEquals(sessionId.get(), rc.session().value()); rc.session().regenerateId(); rc.response().end(); });
/** * Remove some data from the session * @param key the key of the data * @return the data that was there or null if none there */ public <T> T remove(String key) { T ret = (T) delegate.remove(key); return ret; }
/** * @return has the session been destroyed? */ public boolean isDestroyed() { boolean ret = delegate.isDestroyed(); return ret; }
/** * @return has the session been renewed? */ public boolean isRegenerated() { boolean ret = delegate.isRegenerated(); return ret; }