React-Redux 应用程序中的 OpenID Connect SSO

2024-04-21

我正在尝试使用 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(使用前将#替换为@)

React-Redux 应用程序中的 OpenID Connect SSO 的相关文章

  • 更改 Office UI Fabric React 组件的颜色/主题?

    我正在尝试使用Office UI Fabric React 组件 https dev office com fabric components在我的网络应用程序中 有没有办法改变组件的颜色或主题 例如 我尝试了这样的事情 ReactDOM
  • 如何在 ReactJs 中使用 Hooks useState 编写多行状态

    React 16 9 我知道这class component state class JustAnotherCounter extends Component state count 0 相当于使用Hooks useState functi
  • React 导航抽屉中的 React Native 显示模式

    我有一个应用程序 我希望当用户单击某些导航路线时在当前页面上显示模式 而不是导航到完全不同的页面 我现有的代码是 const DrawerNavigator gt return
  • 给出 HTML 和 Xpath 时突出显示

    给定 HTML 作为字符串 Xpath 和偏移量 我需要强调这个词 在下面的例子中我需要强调Child 1 HTML 文本 h2 Children h2 Joe has three kids br ul li a href Child 1
  • React Native 循环这个

    当我把onPress在地图循环中 它不起作用 如何修复它 var PageOne React createClass handlePress this props navigator push id 2 render return
  • 将 React 与 ejs 结合使用?

    我有一个使用 React 状态构建的前端 旨在根据用户操作进行调整 然而 我的前端 React 也旨在显示并允许操作我的服务器端数据 目前我的视图引擎是EJS 我用它来显示数据 举一个广泛的例子 return div class col m
  • 在反应中从父组件调用子组件的方法是反模式吗?为什么?

    我正在尝试实施一个具体的Wizard用户可以使用以下模式使用的组件
  • 类型错误:无法读取未定义的属性“存在”

    我正在尝试为 jsx 文件编写一个测试用例 在此我能够传递 proptypes 但不是我正确传递 proptypes 的地方 当我运行测试用例时出现错误 下面提供我的错误 测试用例和代码 类型错误 无法读取未定义的属性 存在 不知道如何让它
  • 如何在 NextJS 应用程序中处理公共和私有路由?

    我正在开发一个具有公共和管理路由的应用程序 在过去的 CRA 应用程序中 我们使用了自定义路由元素 但我们在 nextjs 中没有 Thins 我们有很多公共页面 我们有 20 个私人页面 路线 在 nextjs 中处理受保护的经过身份验证
  • 这个特定的 ReactJs 代码是如何执行的初学者问题?

    我是初学者 正在阅读大量代码 现在我想知道下面的代码我明白这段代码在做什么 我需要澄清的是代码流程 当我运行它时 我看到图像正在加载 React 是从上到下执行代码吗 占位符图像异步获得正确的图像 但会App如果需要时间 组件会开始渲染但没
  • 可选链接在 create-react-app 中不起作用

    In a create react app项目 我正在使用 babel plugin proposal optional chaining在我的 babelrc中 但是 我有这个错误 Module parse failed Unexpect
  • React + 路由器 + Google 标签管理器

    我花了一些时间在 Quickcypher com 上开发 MVP 我想开始进行一些分析 它对于跟踪总访问量非常有用 但是当我尝试跟踪使用 React Router 的网站上的不同 URL 时 情况却出问题了 我的方法是这样的 设置一个在某些
  • IdentityServer4 无法在生产环境中运行

    我正在使用 IdentityServer4 和 ASP NET Core 3 0 的 React 启动项目 预览版 4 一直运行良好 直到我构建解决方案并尝试使用 dotnet 命令从 cmd 提示符运行它 每次启动应用程序时 它都会告诉我
  • 如何在reactjs中重新加载组件(页面的一部分)?

    我当时正在做反应项目 当我们单击重新加载按钮时 我试图重新加载组件 我实现了 onClick 函数 如下所示 但它正在重新加载整个窗口 我只想重新加载该类组件 而不是整个窗口 谁能帮我解决这个问题吗 refreshPage window l
  • Bootstrap 使用 React js 崩溃

    您好 我正在尝试在反应视图中使用引导折叠 但它不起作用 这很简单 但我不明白发生了什么 return div div
  • 在 NextJS 上运行开发服务器(在网络上)

    在使用 ReactJS 时 当我们使用命令 npm start 时 它会在 localhost 3000 以及网络 192 168 1 2 3000 上启动开发服务器 这非常简单 我可以通过进入该地址在所有设备上测试我的应用程序 最近我开始
  • React Query useInfiniteQuery 使单个项目无效

    使用 useInfiniteQuery 时如何使单个项目无效 这是一个演示我想要实现的目标的示例 假设我有一个成员列表 每个成员都有一个关注按钮 当我按下 关注 按钮时 会单独调用服务器来标记给定用户正在关注另一个用户 此后 我必须使整个无
  • JSX 中的混合运算符

    我想在 JSX 中使用混合运算符 例如 datas datas map function data i return
  • React Native 运行保持在 IDLE 状态

    这是我第一次设置 React NativeUbuntu 18 04 LTS 我已经完成设置 并且尝试使用以下命令在设备上运行该应用程序react native run android命令 这是我在终端中得到的输出 ron lenovo re
  • ESLint 如何集成到 Create React App 中?

    当我跑步时npx create react app some name 为我创建了一个简单的 React 项目 当我随后窥视package json 似乎有一些 ESLint 存在的证据 因为有 eslintConfig extends r

随机推荐