3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NuxtでKeycloakの初期化タイミングが遅くて困る場合

Last updated at Posted at 2019-03-15

はじめに

KeycloakのJavaScript Adapterを使っているとき、Keycloakの初期化がiframe経由になって若干遅い。そうするとまだAccess Tokenが取れていないのにasyncDataが呼ばれて悲しいことになる。なんとかしたい。

対応

https://qiita.com/takyam/items/40067c3f7de2e041e378 にあるようにNuxtのPlugin初期化はawaitをつけて呼ばれるので、Promiseを返すようにすればKeycloakの初期化まで待つようにできる。

keycloak-jsにはonReadyというキーが取れて準備完了したら呼ばれるコールバックがあるので、そのタイミングで解決させれば良い。

pluginsディレクトリにこんなのを置いてnuxt.config.jsで使うようにする。ここではkeycloak-jsを直接使わずにvue-keycloak-jsを使った。

plugins/keycloak.js
import Vue from "vue";
import VueKeycloak from "@dsb-norge/vue-keycloak-js";

export default function({ app, env, isServer }) {
  if (isServer) {
    return true;
  }

  const pluginInstalled = new Promise((resolve, reject) => {
    Vue.use(VueKeycloak, {
      config: env.keycloakConfig,
      onReady: function(keycloak) {
        resolve(keycloak);
      }
    });
  });

  return pluginInstalled;
}

べんり。

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?