Search in sources :

Example 1 with SessionHandler

use of io.vertx.ext.web.handler.SessionHandler in project VX-API-Gateway by EliMirren.

the class VxApiApplication method createHttpsServer.

/**
 * 创建https服务器
 *
 * @param createHttp
 */
public void createHttpsServer(Handler<AsyncResult<Void>> createHttps) {
    this.httpsRouter = Router.router(vertx);
    httpsRouter.route().handler(this::filterBlackIP);
    httpsRouter.route().handler(CookieHandler.create());
    SessionStore sessionStore = null;
    if (vertx.isClustered()) {
        sessionStore = ClusteredSessionStore.create(vertx);
    } else {
        sessionStore = LocalSessionStore.create(vertx);
    }
    SessionHandler sessionHandler = SessionHandler.create(sessionStore);
    sessionHandler.setSessionCookieName(appOption.getSessionCookieName());
    sessionHandler.setSessionTimeout(appOption.getSessionTimeOut());
    httpsRouter.route().handler(sessionHandler);
    httpsRouter.route().handler(BodyHandler.create().setUploadsDirectory("../temp/file-uploads").setBodyLimit(appOption.getContentLength()));
    // 跨域处理
    if (corsOptions != null) {
        CorsHandler corsHandler = CorsHandler.create(corsOptions.getAllowedOrigin());
        corsHandler.allowedHeaders(corsOptions.getAllowedHeaders()).allowCredentials(corsOptions.isAllowCredentials()).exposedHeaders(corsOptions.getExposedHeaders()).allowedMethods(corsOptions.getAllowedMethods()).maxAgeSeconds(corsOptions.getMaxAgeSeconds());
        httpsRouter.route().handler(corsHandler);
    }
    // 创建https服务器
    serverOptions.setSsl(true);
    VxApiCertOptions certOptions = serverOptions.getCertOptions();
    if (certOptions.getCertType().equalsIgnoreCase("pem")) {
        serverOptions.setPemKeyCertOptions(new PemKeyCertOptions().setCertPath(certOptions.getCertPath()).setKeyPath(certOptions.getCertKey()));
    } else if (certOptions.getCertType().equalsIgnoreCase("pfx")) {
        serverOptions.setPfxKeyCertOptions(new PfxOptions().setPath(certOptions.getCertPath()).setPassword(certOptions.getCertKey()));
    } else {
        LOG.error("创建https服务器-->失败:无效的证书类型,只支持pem/pfx格式的证书");
        createHttps.handle(Future.failedFuture("创建https服务器-->失败:无效的证书类型,只支持pem/pfx格式的证书"));
        return;
    }
    Future<Boolean> createFuture = Future.future();
    vertx.fileSystem().exists(certOptions.getCertPath(), createFuture);
    createFuture.setHandler(check -> {
        if (check.succeeded()) {
            if (check.result()) {
                // 404页面
                httpsRouter.route().order(999999).handler(rct -> {
                    HttpServerResponse response = rct.response();
                    if (appOption.getNotFoundContentType() != null) {
                        response.putHeader("Content-Type", appOption.getNotFoundContentType());
                    }
                    response.end(appOption.getNotFoundResult());
                });
                // 如果在linux系统开启epoll
                if (vertx.isNativeTransportEnabled()) {
                    serverOptions.setTcpFastOpen(true).setTcpCork(true).setTcpQuickAck(true).setReusePort(true);
                }
                vertx.createHttpServer(serverOptions).requestHandler(httpsRouter::accept).listen(serverOptions.getHttpsPort(), res -> {
                    if (res.succeeded()) {
                        System.out.println(appOption.getAppName() + " Running on port " + serverOptions.getHttpsPort() + " by HTTPS");
                        createHttps.handle(Future.succeededFuture());
                    } else {
                        System.out.println("create HTTPS Server failed : " + res.cause());
                        createHttps.handle(Future.failedFuture(res.cause()));
                    }
                });
            } else {
                LOG.error("执行创建https服务器-->失败:无效的证书或者错误的路径:如果证书存放在conf/cert中,路径可以从cert/开始,示例:cert/XXX.XXX");
                createHttps.handle(Future.failedFuture("无效的证书或者错误的路径"));
            }
        } else {
            LOG.error("执行创建https服务器-->失败:无效的证书或者错误的路径:如果证书存放在conf/cert中,路径可以从cert/开始,示例:cert/XXX.XXX", check.cause());
            createHttps.handle(Future.failedFuture(check.cause()));
        }
    });
}
Also used : ClusteredSessionStore(io.vertx.ext.web.sstore.ClusteredSessionStore) SessionStore(io.vertx.ext.web.sstore.SessionStore) LocalSessionStore(io.vertx.ext.web.sstore.LocalSessionStore) SessionHandler(io.vertx.ext.web.handler.SessionHandler) PemKeyCertOptions(io.vertx.core.net.PemKeyCertOptions) HttpServerResponse(io.vertx.core.http.HttpServerResponse) CorsHandler(io.vertx.ext.web.handler.CorsHandler) VxApiCertOptions(com.szmirren.vxApi.core.options.VxApiCertOptions) PfxOptions(io.vertx.core.net.PfxOptions)

Example 2 with SessionHandler

use of io.vertx.ext.web.handler.SessionHandler in project vertx-openshift-it by cescoffier.

the class WebSessionVerticle method setupRouter.

private Router setupRouter() {
    Router router = Router.router(vertx);
    router.put().handler(BodyHandler.create());
    router.route().handler(CookieHandler.create());
    SessionStore store = ClusteredSessionStore.create(vertx);
    SessionHandler sessionHandler = SessionHandler.create(store);
    router.route().handler(sessionHandler);
    router.put("/web-session/:key").handler(rc -> {
        String key = rc.pathParam("key");
        String value = rc.getBodyAsString();
        rc.session().put(key, value);
        sendResponse(rc, Future.succeededFuture("OK"));
    });
    router.get("/web-session/:key").handler(rc -> {
        String key = rc.pathParam("key");
        String value = rc.session().get(key);
        sendResponse(rc, Future.succeededFuture(value));
    });
    router.get("/health").handler(rc -> {
        rc.response().putHeader(HttpHeaders.CONTENT_TYPE, "text/plain").end("OK");
    });
    return router;
}
Also used : ClusteredSessionStore(io.vertx.ext.web.sstore.ClusteredSessionStore) SessionStore(io.vertx.ext.web.sstore.SessionStore) SessionHandler(io.vertx.ext.web.handler.SessionHandler) Router(io.vertx.ext.web.Router)

Example 3 with SessionHandler

use of io.vertx.ext.web.handler.SessionHandler in project Summer by yale8848.

the class SummerRouter method init.

private void init() {
    router.route().handler(BodyHandler.create());
    router.route().handler(CookieHandler.create());
    SessionHandler handler = SessionHandler.create(LocalSessionStore.create(vertx));
    handler.setNagHttps(true);
    router.route().handler(handler);
}
Also used : SessionHandler(io.vertx.ext.web.handler.SessionHandler)

Example 4 with SessionHandler

use of io.vertx.ext.web.handler.SessionHandler in project VX-API-Gateway by EliMirren.

the class VxApiApplication method createHttpServer.

/**
 * 创建http服务器
 *
 * @param createHttp
 */
public void createHttpServer(Handler<AsyncResult<Void>> createHttp) {
    this.httpRouter = Router.router(vertx);
    httpRouter.route().handler(this::filterBlackIP);
    httpRouter.route().handler(CookieHandler.create());
    SessionStore sessionStore = null;
    if (vertx.isClustered()) {
        sessionStore = ClusteredSessionStore.create(vertx);
    } else {
        sessionStore = LocalSessionStore.create(vertx);
    }
    SessionHandler sessionHandler = SessionHandler.create(sessionStore);
    sessionHandler.setSessionCookieName(appOption.getSessionCookieName());
    sessionHandler.setSessionTimeout(appOption.getSessionTimeOut());
    httpRouter.route().handler(sessionHandler);
    httpRouter.route().handler(BodyHandler.create().setUploadsDirectory("../temp/file-uploads").setBodyLimit(appOption.getContentLength()));
    // 跨域处理
    if (corsOptions != null) {
        CorsHandler corsHandler = CorsHandler.create(corsOptions.getAllowedOrigin());
        corsHandler.allowedHeaders(corsOptions.getAllowedHeaders()).allowCredentials(corsOptions.isAllowCredentials()).exposedHeaders(corsOptions.getExposedHeaders()).allowedMethods(corsOptions.getAllowedMethods()).maxAgeSeconds(corsOptions.getMaxAgeSeconds());
        httpRouter.route().handler(corsHandler);
    }
    // 如果在linux系统开启epoll
    if (vertx.isNativeTransportEnabled()) {
        serverOptions.setTcpFastOpen(true).setTcpCork(true).setTcpQuickAck(true).setReusePort(true);
    }
    // 404页面
    httpRouter.route().order(999999).handler(rct -> {
        HttpServerResponse response = rct.response();
        if (appOption.getNotFoundContentType() != null) {
            response.putHeader("Content-Type", appOption.getNotFoundContentType());
        }
        response.end(appOption.getNotFoundResult());
    });
    // 创建http服务器
    vertx.createHttpServer(serverOptions).requestHandler(httpRouter::accept).listen(serverOptions.getHttpPort(), res -> {
        if (res.succeeded()) {
            System.out.println(MessageFormat.format("{0} Running on port {1} by HTTP", appOption.getAppName(), Integer.toString(serverOptions.getHttpPort())));
            createHttp.handle(Future.succeededFuture());
        } else {
            System.out.println("create HTTP Server failed : " + res.cause());
            createHttp.handle(Future.failedFuture(res.cause()));
        }
    });
}
Also used : ClusteredSessionStore(io.vertx.ext.web.sstore.ClusteredSessionStore) SessionStore(io.vertx.ext.web.sstore.SessionStore) LocalSessionStore(io.vertx.ext.web.sstore.LocalSessionStore) SessionHandler(io.vertx.ext.web.handler.SessionHandler) HttpServerResponse(io.vertx.core.http.HttpServerResponse) CorsHandler(io.vertx.ext.web.handler.CorsHandler)

Aggregations

SessionHandler (io.vertx.ext.web.handler.SessionHandler)4 ClusteredSessionStore (io.vertx.ext.web.sstore.ClusteredSessionStore)3 SessionStore (io.vertx.ext.web.sstore.SessionStore)3 HttpServerResponse (io.vertx.core.http.HttpServerResponse)2 CorsHandler (io.vertx.ext.web.handler.CorsHandler)2 LocalSessionStore (io.vertx.ext.web.sstore.LocalSessionStore)2 VxApiCertOptions (com.szmirren.vxApi.core.options.VxApiCertOptions)1 PemKeyCertOptions (io.vertx.core.net.PemKeyCertOptions)1 PfxOptions (io.vertx.core.net.PfxOptions)1 Router (io.vertx.ext.web.Router)1