1

如何在 SSR 环境中使用 oidc-client 运行 React 应用程序?

我正在开发一个使用 oidc-client (v 1.7.1) 的 React 实现。在非 SSR 环境中,解决方案很好。但我们的要求之一是该解决方案应该在 SSR 环境中运行。为了解决这个问题,我需要更改 oidc-client 设置中的存储。

我已经尝试了使用 cookie 存储而不是会话或本地存储的解决方案(检查https://github.com/IdentityModel/oidc-client-js/issues/269)但这种类型的存储不起作用(存储未定义)。

const settings = {
  userStore: new WebStorageStateStore({ store: new CookieStorage() }),
  stateStore: new WebStorageStateStore({ store: new CookieStorage() }),
};

this.userManager = new UserManager(settings);

在 SSR 环境中使用 oidc-client 的最佳解决方案是什么?oidc-client 是否可以与 SSR 结合使用?

4

1 回答 1

1

我已经为此苦苦挣扎了大约一天。我发现 oidc-client-js 试图设置的用户 cookie 太大了。cookie 的最大存储大小为每个域 4096 字节。cookie 本身的值约为 3,974 字节。因此,使用默认密钥(有点长)、域、到期等,它超过了大小限制。我不得不缩小返回的有效载荷的范围,使其不包含一些用户配置文件信息,如果你真的需要它,你应该能够将它添加到访问令牌中

于 2019-10-11T19:50:33.660 回答