javascript - 如何在整个 session 期间保留 JWT token 直到用户注销?

标签 javascript ruby-on-rails reactjs authentication jwt

我正在使用 JWT 为一个简单的 React/Rails Api 进行身份验证,该 API 向 Giphy API 发出请求。

我在成功登录后收到一个 token ,它之所以有效,是因为我在“开发者工具”的“网络”选项卡的授权 header 中有'Bearer thatlongstringwithnumbersandletters'。但是,当我刷新页面时,我丢失了 token 。

在我的 app.js 文件中:

handleLogin(params){
    // debugger
    console.log('params', params)
    let URL = 'http://localhost:3000/api/v1/auth'
    axios.post(URL, {
      username: params.username,
      password: params.password
    })
    .then(res => {  //console.log('app', res.data)
      const token = res.data.token
      //console.log('Store in localStorage: ', token)
      localStorage.setItem('jwtToken', token)
      setAuthorizationToken(token)
      // this.history.push('/puns')
    })
  }

在我的 setAuthorizationToken.js 文件中:

import axios from 'axios'

const setAuthorizationToken = (token) => {
  if(token){
    axios.defaults.headers.common['Authorization'] = `Bearer ${token}`
  } else {
    delete axios.defaults.headers.common['Authorization']
  }
  console.log('Authorization is SET')
}

export default setAuthorizationToken

然后,我认为通过在 index.js(app.js 的父级)中放置一个回调, token 将在整个用户 session 中持续存在。通过将其放置在父级中,我可以在整个过程中保存 token 。

import setAuthorizationToken from './components/auth/setAuthorizationToken'

setAuthorizationToken(localStorage.jwtToken);

ReactDOM.render((
  <Router>
    <App />
  </Router>
), document.getElementById('root'));

如何让 token 持久化?感谢您提供任何帮助,谢谢。

最佳答案

看起来您没有正确访问 localStorage

试试这个:

localStorage.getItem('jwtToken')

关于javascript - 如何在整个 session 期间保留 JWT token 直到用户注销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44608627/

相关文章:

javascript - 在 javascript 中以 24 格式给出明天的时间,获取现在剩余的时间

javascript - Autobahn JS 订阅管理

javascript - NodeJS 在 4 或 5 小时后变慢

javascript - 重新呈现我的 react 组件的最佳模式?

javascript - 如何使用 componentDidMount 调用 setState 而不会导致额外的渲染调用?

javascript - 如何通过 C# 和 Selenium 在属性样式为 ="display: none;"的文本区域内发送文本

mysql - Rails mysql 如何一次更改多个列上的时间?

ruby-on-rails - rails + postgres : Using Group query on a has_many through

ruby-on-rails - Rails : MIME type issues with . M4V文件

javascript - 如何在reactjs中添加多个对象?