oidc-client-ts icon indicating copy to clipboard operation
oidc-client-ts copied to clipboard

One class to let `oidc-client-ts` support SSR.

Open jim-king-2000 opened this issue 11 months ago • 1 comments

Add the following class:

import Cookies from "universal-cookie";

export class CookieStorage {
  constructor(cookieHeader) {
    this._cookies = new Cookies(cookieHeader);
  }
  getItem(key) {
    return this._cookies.get(encodeURIComponent(key), { doNotParse: true });
  }

  setItem(key, value) {
    return this._cookies.set(encodeURIComponent(key), value, { maxAge: 1000 });
  }

  removeItem(key) {
    return this._cookies.remove(encodeURIComponent(key));
  }
}

And config it:

export function config(cookieHeaders)
{
    const cookieStorage = new CookieStorage(cookieHeaders);
    return {
        userStore: new WebStorageStateStore({ store: cookieStorage }),
        stateStore: new WebStorageStateStore({ store: cookieStorage }),
    };
}

Then, oidc-client-ts can work on the server side. Enjoy.

jim-king-2000 avatar Dec 02 '24 08:12 jim-king-2000