/** * Encode the cookie to a string. This is what is used in the Set-Cookie header * @return the encoded cookie */ public String encode() { String ret = delegate.encode(); return ret; }
/** * Encode the cookie to a string. This is what is used in the Set-Cookie header * @return the encoded cookie */ public String encode() { String ret = delegate.encode(); return ret; }
@Test public void testCookieFields() throws Exception { Cookie cookie = Cookie.cookie("foo", "bar"); assertEquals("foo", cookie.getName()); assertEquals("bar", cookie.getValue()); assertEquals("foo=bar", cookie.encode()); assertNull(cookie.getPath()); cookie.setPath("/somepath"); assertEquals("/somepath", cookie.getPath()); assertEquals("foo=bar; Path=/somepath", cookie.encode()); assertNull(cookie.getDomain()); cookie.setDomain("foo.com"); assertEquals("foo.com", cookie.getDomain()); assertEquals("foo=bar; Path=/somepath; Domain=foo.com", cookie.encode()); long maxAge = 30 * 60; cookie.setMaxAge(maxAge); long now = System.currentTimeMillis(); String encoded = cookie.encode(); int startPos = encoded.indexOf("Expires="); int endPos = encoded.indexOf(';', startPos); String expiresDate = encoded.substring(startPos + 8, endPos); Date d = dateTimeFormat.parse(expiresDate); assertTrue(d.getTime() - now >= maxAge); cookie.setMaxAge(Long.MIN_VALUE); cookie.setSecure(true); assertEquals("foo=bar; Path=/somepath; Domain=foo.com; Secure", cookie.encode()); cookie.setHttpOnly(true); assertEquals("foo=bar; Path=/somepath; Domain=foo.com; Secure; HTTPOnly", cookie.encode()); }
@Override public void handle(RoutingContext context) { String cookieHeader = context.request().headers().get(COOKIE); if (cookieHeader != null) { Set<io.netty.handler.codec.http.cookie.Cookie> nettyCookies = ServerCookieDecoder.STRICT.decode(cookieHeader); for (io.netty.handler.codec.http.cookie.Cookie cookie : nettyCookies) { Cookie ourCookie = new CookieImpl(cookie); context.addCookie(ourCookie); } } context.addHeadersEndHandler(v -> { // save the cookies Set<Cookie> cookies = context.cookies(); for (Cookie cookie: cookies) { if (cookie.isChanged()) { context.response().headers().add(SET_COOKIE, cookie.encode()); } } }); context.next(); }
public Handler<RoutingContext> loginStatusHandler() { return rc -> { AuthenticatedUser user = AuthenticatedUser.from(rc); if (user != null) { rc.response().end(new JsonObject() .put("authenticated", true) // TODO issuer; acting principal; authority sets .put("accountId", user.getAuthenticatedAs()) .put("userDisplayName", user.getFullDisplayName()).encode()); } else { QueryStringEncoder params = new QueryStringEncoder(""); params.addParam("client_id", clientId); params.addParam("response_type", "code"); params.addParam("scope", scope); params.addParam("redirect_uri", redirectUri(rc)); String state = new TokenGenerator(secureRandom).create(15); params.addParam("state", state); rc.response().headers().add(SET_COOKIE, io.vertx.ext.web.Cookie.cookie("state", state) .setHttpOnly(true) .setSecure(redirectUri(rc).startsWith("https")).encode()); rc.response().end(new JsonObject() .put("authenticated", false) .put("loginUrl", authUrl + params).encode()); } }; }
public Handler<RoutingContext> loginStatusHandler() { return rc -> { AuthenticatedUser user = AuthenticatedUser.from(rc); if (user != null) { rc.response().end(new JsonObject() .put("authenticated", true) // TODO issuer; acting principal; authority sets .put("accountId", user.getAuthenticatedAs()) .put("userDisplayName", user.getFullDisplayName()).encode()); } else { QueryStringEncoder params = new QueryStringEncoder(""); params.addParam("client_id", clientId); params.addParam("response_type", "code"); params.addParam("scope", scope); params.addParam("redirect_uri", redirectUri(rc)); String state = new TokenGenerator(secureRandom).create(15); params.addParam("state", state); rc.response().headers().add(SET_COOKIE, io.vertx.ext.web.Cookie.cookie("state", state) .setHttpOnly(true) .setSecure(redirectUri(rc).startsWith("https")).encode()); rc.response().end(new JsonObject() .put("authenticated", false) .put("loginUrl", authUrl + params).encode()); } }; }
} else { MetricsHandler.checkpoint(rc, "authFail"); rc.response().headers().add(SET_COOKIE, session.setValue("").setMaxAge(0).encode()); if (mandatory) { log.debug("Access token could not be authenticated", r.cause());
public Handler<RoutingContext> logoutHandler() { return rc -> { if ("yes".equals(rc.request().getParam("done"))) { rc.response().setStatusCode(302).putHeader("Location", VertxBase.absoluteContext(config::getString, rc)).end(); // rc.response().end("Logout complete"); return; } QueryStringEncoder fromEnc = new QueryStringEncoder(""); fromEnc.addParam("redirect_uri", VertxBase.absolutePath(config::getString, rc) + "?done=yes"); rc.response().headers() .add(SET_COOKIE, io.vertx.ext.web.Cookie.cookie("session_token", "").setMaxAge(0).encode()) .add(SET_COOKIE, io.vertx.ext.web.Cookie.cookie("XSRF-TOKEN", "").setMaxAge(0).encode()) .add("location", logoutUrl + fromEnc); rc.response().setStatusCode(302).end(); }; }
} else { MetricsHandler.checkpoint(rc, "authFail"); rc.response().headers().add(SET_COOKIE, sessionCookie.setValue("").setMaxAge(0).encode()); if (mandatory) { if (log.isTraceEnabled()) {
} else { MetricsHandler.checkpoint(rc, "authFail"); rc.response().headers().add(SET_COOKIE, sessionCookie.setValue("").setMaxAge(0).encode()); if (mandatory) { if (log.isTraceEnabled()) {
} else { MetricsHandler.checkpoint(rc, "authFail"); rc.response().headers().add(SET_COOKIE, sessionCookie.setValue("").setMaxAge(0).encode()); if (mandatory) { if (log.isTraceEnabled()) {
public Handler<RoutingContext> logoutHandler() { return rc -> { if ("yes".equals(rc.request().getParam("done"))) { rc.response().setStatusCode(302).putHeader("Location", VertxBase.absoluteContext(config::getString, rc)).end(); // rc.response().end("Logout complete"); return; } QueryStringEncoder fromEnc = new QueryStringEncoder(""); fromEnc.addParam("redirect_uri", VertxBase.absolutePath(config::getString, rc) + "?done=yes"); rc.response().headers() .add(SET_COOKIE, io.vertx.ext.web.Cookie.cookie("session_token", "").setMaxAge(0).encode()) .add(SET_COOKIE, io.vertx.ext.web.Cookie.cookie("XSRF-TOKEN", "").setMaxAge(0).encode()) .add("location", logoutUrl + fromEnc); rc.response().setStatusCode(302).end(); }; }
@Test public void testCookieFields() throws Exception { Cookie cookie = Cookie.cookie("foo", "bar"); assertEquals("foo", cookie.getName()); assertEquals("bar", cookie.getValue()); assertEquals("foo=bar", cookie.encode()); assertNull(cookie.getPath()); cookie.setPath("/somepath"); assertEquals("/somepath", cookie.getPath()); assertEquals("foo=bar; Path=/somepath", cookie.encode()); assertNull(cookie.getDomain()); cookie.setDomain("foo.com"); assertEquals("foo.com", cookie.getDomain()); assertEquals("foo=bar; Path=/somepath; Domain=foo.com", cookie.encode()); long maxAge = 30 * 60; cookie.setMaxAge(maxAge); long now = System.currentTimeMillis(); String encoded = cookie.encode(); int startPos = encoded.indexOf("Expires="); int endPos = encoded.indexOf(';', startPos); String expiresDate = encoded.substring(startPos + 8, endPos); Date d = dateTimeFormat.parse(expiresDate); assertTrue(d.getTime() - now >= maxAge); cookie.setMaxAge(Long.MIN_VALUE); cookie.setSecure(true); assertEquals("foo=bar; Path=/somepath; Domain=foo.com; Secure", cookie.encode()); cookie.setHttpOnly(true); assertEquals("foo=bar; Path=/somepath; Domain=foo.com; Secure; HTTPOnly", cookie.encode()); }
@Override public void handle(RoutingContext context) { String cookieHeader = context.request().headers().get(COOKIE); if (cookieHeader != null) { Set<io.netty.handler.codec.http.cookie.Cookie> nettyCookies = ServerCookieDecoder.STRICT.decode(cookieHeader); for (io.netty.handler.codec.http.cookie.Cookie cookie : nettyCookies) { Cookie ourCookie = new CookieImpl(cookie); context.addCookie(ourCookie); } } context.addHeadersEndHandler(v -> { // save the cookies Set<Cookie> cookies = context.cookies(); for (Cookie cookie: cookies) { if (cookie.isChanged()) { context.response().headers().add(SET_COOKIE, cookie.encode()); } } }); context.next(); }
@Override public void handle(RoutingContext context) { String cookieHeader = context.request().headers().get(COOKIE); if (cookieHeader != null) { Set<Cookie> nettyCookies = ServerCookieDecoder.STRICT.decode(cookieHeader); for (io.netty.handler.codec.http.cookie.Cookie cookie : nettyCookies) { io.vertx.ext.web.Cookie ourCookie = new CookieImpl(cookie); context.addCookie(ourCookie); } } context.addHeadersEndHandler(v -> { // save the cookies Set<io.vertx.ext.web.Cookie> cookies = context.cookies(); for (io.vertx.ext.web.Cookie cookie: cookies) { if (cookie.isChanged()) { proxy(context, cookie); context.response().headers().add(SET_COOKIE, cookie.encode()); } } }); context.next(); }
@Override public void handle(RoutingContext context) { String cookieHeader = context.request().headers().get(COOKIE); if (cookieHeader != null) { Set<Cookie> nettyCookies = ServerCookieDecoder.STRICT.decode(cookieHeader); for (io.netty.handler.codec.http.cookie.Cookie cookie : nettyCookies) { io.vertx.ext.web.Cookie ourCookie = new CookieImpl(cookie); context.addCookie(ourCookie); } } context.addHeadersEndHandler(v -> { // save the cookies Set<io.vertx.ext.web.Cookie> cookies = context.cookies(); for (io.vertx.ext.web.Cookie cookie: cookies) { if (cookie.isChanged()) { proxy(context, cookie); context.response().headers().add(SET_COOKIE, cookie.encode()); } } }); context.next(); }
for (io.vertx.ext.web.Cookie cookie : cookies) { if (cookie.isChanged()) { rc.response().headers().add(SET_COOKIE, cookie.encode()); .setHttpOnly(true) .setPath(rc.mountPoint() + "/") .setSecure(redirectUri(rc).startsWith("https")).encode()); .setHttpOnly(true) .setPath(rc.mountPoint() + "/") .setSecure(redirectUri(rc).startsWith("https")).encode()); .setHttpOnly(true) .setPath(rc.mountPoint() + "/") .setSecure(redirectUri(rc).startsWith("https")).encode());
for (io.vertx.ext.web.Cookie cookie : cookies) { if (cookie.isChanged()) { rc.response().headers().add(SET_COOKIE, cookie.encode()); .setHttpOnly(true) .setPath(rc.mountPoint() + "/") .setSecure(redirectUri(rc).startsWith("https")).encode()); .setHttpOnly(true) .setPath(rc.mountPoint() + "/") .setSecure(redirectUri(rc).startsWith("https")).encode());