私は、フロントエンドからVertxバックエンドにsock.js接続をしようとしています。Vertx SockJsイベントバス認証
私の最初の試みは、このように見えた:
let token = '<the token>';
let data = {'Authorization' : 'Bearer ' + token};
let eb = new EventBus("http://localhost:8080/eventbus");
eb.onopen = function() {
eb.registerHandler('notifications', data, (err, msg) => {
// handle the response
});
}
私は公式sock.jsドキュメントが、これはサポートされていないと述べているにもかかわらず、EventBusの作成時に認証データを送信する必要があるので、これは動作しません。明らかに今はnew EventBus("http://localhost:9090/eventbus", data)
を送ってもうまくいきません。このため
https://github.com/sockjs/sockjs-node#authorisation
私のバックエンドハンドラ:
final BridgeOptions bridgeOptions = new BridgeOptions()
.addOutboundPermitted(new PermittedOptions().setAddress("notifications"))
final SockJSHandler sockJSHandler = SockJSHandler.create(vertx).bridge(bridgeOptions, event -> {
event.complete(true);
});
router.route("/eventbus/*").handler(ctx -> {
String token = ctx.request().getHeader("Authorization"); // null
});
router.route("/eventbus/*").handler(sockJSHandler);
私はヘッダフィールドAuthroization
を試みたものは何でも、常にnullです。
sock.js接続を認証し、vertexのイベントバス要求に登録する標準的な方法は何ですか?
Vert.xウェブドキュメントの[メッセージの承認が必要](http://vertx.io/docs/vertx-web/java/#_requiring_authorisation_for_messages)セクションを確認しましたか? – tsegismont
はい、私は全体のvertxドキュメント – Markus
OKを読んだことがあります。あなたのスニペットがVert.xのWeb認証機能を使用しているように見えないため、私は尋ねました。 – tsegismont