В документации Vert.x here, я вижу, что вы можете получить экземпляр объекта JWTAuth и использовать его в обработчике. Я не уверен, могу ли я хранить ссылку на объект в переменной static или экземпляра, чтобы использовать его позже для создания новых токенов для нескольких запросов. Я планировал создать класс для управления аутентификацией токена JWT и получить ссылку на объект JWTAuth на конструкторе. Затем в методе, вызываемом обработчиком, используйте ссылку, хранящуюся в переменной экземпляра, чтобы создать токен. Это нормально? Или API был разработан, чтобы работать лучше всего, вызывая JWTAuth.create() каждый раз, когда мне это нужно?Экземпляр экземпляра Vertx JWTAuth
Например,
Util класс
public class AuthenticationUtil {
private JWTAuth auth;
public AuthenticationUtil(Vertx vertx) {
JsonObject authConfig = new JsonObject().put("keyStore", new JsonObject()
.put("type", "jceks")
.put("path", "keystore.jceks")
.put("password", "secret"));
auth = JWTAuth.create(vertx, authConfig);
}
public void getToken(RoutingContext context) {
if (validateCredentials(context.request().getParam("username"), context.request().getParam("password"))) {
context.response().end(auth.generateToken(new JsonObject(), new JWTOptions()));
} else {
context.fail(401);
}
}
public Handler<RoutingContext> createAuthHandler() {
return JWTAuthHandler.create(auth);
}
...
}
ServerVerticle
@Override
public void start(Future<Void> future) {
AuthenticationUtil authUtil = new AuthenticationUtil(vertx);
...
router.post("/auth").blockingHandler(authUtil::getToken);
router.get("/someProtectedResource1").handler(authUtil.createAuthHandler());
router.get("/someProtectedResource2").handler(authUtil.createAuthHandler());
...
}
Что делать, если я создаю много verticles сервера, и вы хотите, чтобы одни и те же экземпляр AuthenticationUtil для всех из них?
Одним из подходов может быть: make (и, пожалуйста, рефакторинг) вещь 'AuthenticationUtil', вертикаль (или« рабочая вертикаль »), и вам нужно иметь дело только с асинхронной обработкой. –
@ ɐuıɥɔɐɯ Спасибо, я планировал сделать его вертикулой, но у меня были некоторые сомнения в том, как они работали. Я задал еще один вопрос об этом, и теперь я думаю, что смогу это сделать. – rober710