我有以下情况,在我的vertx应用程序中,我有一个端点/登录,在收到正确的凭据后发出一个有效期为30分钟的JWT。
我使用此令牌来保护/ api / *端点下的所有路由。
所有这些都按预期工作。
我的问题是我希望能够拦截那些/ api / *请求,并且在执行令牌身份验证之前检查令牌以及它是否即将过期以生成可以在头文件中返回的新签名响应,以便客户端可以在后续请求中使用它。
我想要实现的目标是:
一般来说,任何一种策略都是受欢迎的。
由于
答案 0 :(得分:3)
为了在JWT验证之前处理请求,您需要做的就是在Auth处理程序之前添加自定义处理程序,例如:
路由器路由器= Router.router(vertx);
// Create a JWT Auth Provider
JWTAuth jwt = JWTAuth.create(vertx, new JsonObject()
.put("keyStore", new JsonObject()
.put("type", "jceks")
.put("path", "keystore.jceks")
.put("password", "secret")));
router.route("/api/*").handler(ctx -> {
// here do what you're planning to achieve, and the call
ctx.next();
});
// protect the API
router.route("/api/*").handler(JWTAuthHandler.create(jwt, "/api/newToken"));