我正在使用JWT开发authentication,以实现一个向Giphy api发出请求的简单的React/Rails Api。
我在成功登录后收到一个令牌,它之所以有效,是因为我在开发人员工具的Network选项卡中的Authorization标头中有'Bearer login works and headers‘。但是,当我刷新页面时,我会丢失令牌。
在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的父对象)中放置一个回调,将其放在父对象中,这样就可以在整个过程中保存令牌。
import setAuthorizationToken from './components/auth/setAuthorizationToken'
setAuthorizationToken(localStorage.jwtToken);
ReactDOM.render((
<Router>
<App />
</Router>
), document.getElementById('root'));
如何让令牌被持久化?感谢您的帮助,谢谢。
发布于 2017-06-18 03:45:22
看起来您没有正确访问localStorage
。
试着这样做:
localStorage.getItem('jwtToken')
发布于 2018-09-12 08:01:30
存储在sessionStorage中:
sessionStorage.setItem('access_token', access_token);
然后使用token:
sessionStorage.getItem('access_token');
https://stackoverflow.com/questions/44608627
复制相似问题