0

我正在查看文档,但找不到任何信息。我有一个 HTTP 请求,我可以轻松地从上下文中获取用户。

    router.get("/politrons/users").handler(routingContext -> {
        User user = routingContext.user();
        user.isAuthorised("read", res -> {
            boolean hasPermission = res.result();
            if (hasPermission) {
                mongo.find("users", new JsonObject(), getUsersAsyncResultHandler(routingContext));
            } else {
                routingContext.fail(403);  // Failed creation
            }
        });
    });

但我也将事件总线用于其他事务。

             eb.consumer(FIND_USER_SERVER).handler(message -> {
        eb.send(UserMongoWorker.MONGO_FIND_USER, message.body(), res -> {
            message.reply(getResult(res));
        });
    });

我的问题是:如何从事件总线获取用户?就像我从 routingContext 做的那样?

4

1 回答 1

1

目前还没有内置支持。但是您可以通过消息头传播用户和其他上下文数据。这样您就不需要修改原始消息正文。像这样。

    Vertx.vertx().eventBus().send("Your address", "Your message",
            new DeliveryOptions().addHeader("userId", "Your user ID")
                    .addHeader("userType", "GUEST").addHeader("username", "Sohan"));

并像这样抓住你的用户。

    Vertx.vertx().eventBus().consumer("Your address", r -> {
        final String userId = r.headers().get("userId");
    });
于 2015-11-16T05:25:49.837 回答