Cookiestorage在SSR React实现上不适用于oidc-client

时间:2019-05-10 08:52:55

标签: reactjs ssr oidc-client-js

如何在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结合使用?

1 个答案:

答案 0 :(得分:1)

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