如何在 React 页面之间传递令牌以进行授权(在 Django Knox 设置中)?

How to pass in the token for authorization in between React pages (in a Django Knox setup)?

我有 2 个components/pages。一个是登录页面,一个是用户自定义页面。我希望用户自定义页面是token授权的,所以你只能在登录后才能看到它。

我正在使用 Django + React 设置,并将 Django Knox 用作授权令牌。

我现在有一个使用 this.props 的工作流,它将令牌从登录组件传递到主 app.js,然后再传递到用户自定义组件。但我想在页面之间的 routing/switching 期间,我的令牌丢失了。我如何维护此令牌?

因此,基本上是尝试保留您的令牌,而不必在(例如)重新加载页面时或如您所述,在应用程序的不同页面之间导航时重新获取它。

有多种方法可以存储令牌,无需太多工作,其中一个例子是 sessionStorage

// API response
const token = response.data.token

// write to storage
sessionStorage.setItem('myTokenName', token)

// read from storage
sessionStorage.getItem('myTokenName')

// delete from storage
sessionStorage.remove('myTokenName')

使用纯 JS:

  • sessionStorage
  • localStorage
  • cookies

NOTE: Each has it's purpose and limitations

使用额外的库进行状态管理,虽然这需要更多的工作,并且不是解决您的问题所必需的。

  • Redux
  • Apollo(假设您使用的是 GraphQL)