我正在尝试使用 OpenID-Connect 提供程序在我的 React-Redux 应用程序上实现 SSO。目的是保护所有组件,并在会话结束时将用户重定向到身份提供者的登录页面。
这就是为什么我不能在应用程序中拥有专用的登录页面(组件)。
我读过,将 JWT 保存在 localStorage 中可能是一个好主意,因此我正在考虑在 Redux 存储中使用 isAuthenticated 标志并将 JWT 保留在 localStorage 中。然后,我可以从 localStorage 获取 JWT,以验证我从应用程序中调用的其他 API。这种做法合适吗?
此外,任何人都可以向我指出一个可以用于为此目的获取(和刷新)JWT 的库/包吗?我查阅了大量文档并尝试了以下方法,但无法使它们发挥作用:
redux-oidc https://github.com/maxmantz/redux-oidc:我的应用程序中没有任何特定的回调组件,因此我不太知道如何将此方法应用于我的应用程序。
护照 openid 连接 https://www.npmjs.com/package/passport-openid-connect: Passport 依赖于在 cookie 中存储会话,但我想使用本地存储。
redux-auth-包装器 https://github.com/mjrussell/redux-auth-wrapper:更高阶的组件听起来不错,但我仍然无法弄清楚如何在没有任何专用登录组件的情况下集成它。
有人可以指导我吗?我是 React 生态系统的新手,所以请原谅我的不理解。
任何帮助将非常感激!
Thanks
你走在正确的道路上 - redux-oidc 使用登录详细信息管理你的 Redux 状态 - 实际管理 JWT(隐式流程)的客户端库,重定向到 IdentityServer(以哪个)登录页面并返回到你的应用程序(“回调”) ") 是 oidc 客户端。
redux-auth-wrapper 只是一个 HOC(高阶组件) - 基本上是一个包装器,用于检查用户是否经过身份验证(在 Redux 存储中或使用自定义函数)并转发到登录页面 - 在我看来,你不需要真的需要它,因为 redux-oidc 已经为你提供了你需要的一切。
我个人也实现了身份服务器4 https://github.com/IdentityServer/IdentityServer4- 集中管理所有外部提供商 - 到目前为止一直运行良好。
我建议先看看https://blogs.msdn.microsoft.com/webdev/2017/04/26/the-mvp-show-learns-about-asp-net-identity-server-and-heidelberg/ https://blogs.msdn.microsoft.com/webdev/2017/04/26/the-mvp-show-learns-about-asp-net-identity-server-and-heidelberg/IdentityServer4 的创建者非常清楚地解释了身份识别的工作原理和流程(隐式与混合)。
一旦您了解了身份基础知识以及它们如何结合在一起,请查看redux-oidc 示例 https://github.com/maxmantz/redux-oidc-example(非常容易遵循)。
玩得开心 ;)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)