Javascript 刷新页面时丢失访问令牌
因此,我有一个路由到页面的javascript文件,“主页”会丢失访问令牌,并在页面刷新时变为空值。当页面刷新时,如何防止它丢失令牌。因为现在,如果我按下主页上的刷新按钮,它将丢失访问令牌,直到我按下注销并重新登录Javascript 刷新页面时丢失访问令牌,javascript,reactjs,spotify,Javascript,Reactjs,Spotify,因此,我有一个路由到页面的javascript文件,“主页”会丢失访问令牌,并在页面刷新时变为空值。当页面刷新时,如何防止它丢失令牌。因为现在,如果我按下主页上的刷新按钮,它将丢失访问令牌,直到我按下注销并重新登录 var Spotify = require('spotify-web-api-js'); var spotifyApi = new Spotify(); class App extends Component { constructor(){ super();
var Spotify = require('spotify-web-api-js');
var spotifyApi = new Spotify();
class App extends Component {
constructor(){
super();
const params = this.getHashParams(); //tokens saved here
const token = params.access_token;
if (token) {
spotifyApi.setAccessToken(token);
}
this.state = {
loggedIn: token ? true : false,
atoken: token, //access token
};
console.log(spotifyApi.getAccessToken())
//localStorage.setItem(token, this.state.atoken)
}
getHashParams() { //gets users refresh and access token
var hashParams = {};
var e, r = /([^&;=]+)=?([^&;]*)/g,
q = window.location.hash.substring(1);
e = r.exec(q)
while (e) {
hashParams[e[1]] = decodeURIComponent(e[2]);
e = r.exec(q);
}
return hashParams;
}
render() {
return (
<Router>
<div className='App'>
<Route exact path = '/' component= {Home}/>
<Route path= '/playlist' component = {Playlist}/>
</div>
</Router>
);
}
}
export default App;
var Spotify=require('Spotify-web-api-js');
var spotifyApi=new Spotify();
类应用程序扩展组件{
构造函数(){
超级();
const params=this.getHashParams();//保存在此处的令牌
const token=params.access_token;
如果(令牌){
spotifyApi.setAccessToken(令牌);
}
此.state={
loggedIn:标记?对:错,
atoken:token,//访问令牌
};
console.log(spotifyApi.getAccessToken())
//setItem(令牌,this.state.atoken)
}
getHashParams(){//获取用户刷新和访问令牌
var hashParams={};
变量e,r=/([^&;=]+)=?([^&;]*)/g,
q=window.location.hash.substring(1);
e=r.exec(q)
while(e){
hashParams[e[1]]=decodeURIComponent(e[2]);
e=r.exec(q);
}
返回hashParams;
}
render(){
返回(
);
}
}
导出默认应用程序;
您正在将内容存储在LocalStorage中,但我看不到您将这些值提取出来。哦,是的,我在玩弄LocalStorage以了解它是如何工作的,我的代码没有真正使用它,我在发布此问题之前忘了删除该行。我不确定localStorage的范围是如何工作的。例如,如果我在父类“App”的localStorage中设置变量,我不确定如何将其传递给“Home”类@每当刷新页面时,应用程序的整个内存都会被清除。因此,要保留某些东西(比如代币),您需要将其存储在某个地方。LocalStorage是一个完美的地方。@即使是,但假设我将访问令牌存储在父类“App”的本地存储中,当我执行LocalStorage.get()时,子组件“Home”是否仍然可以访问相同的LocalStorage?因为我不了解localStorage的作用域是如何工作的localStorage的作用域是每个域。任何选项卡,任何组件都可以全局访问存储在LocalStorage中的同一个存储,但我看不到您将这些值拉回来。哦,是的,我在玩弄LocalStorage以了解它是如何工作的,我的代码没有真正使用它,我在发布此问题之前忘记删除该行。我不确定localStorage的范围是如何工作的。例如,如果我在父类“App”的localStorage中设置变量,我不确定如何将其传递给“Home”类@每当刷新页面时,应用程序的整个内存都会被清除。因此,要保留某些东西(比如代币),您需要将其存储在某个地方。LocalStorage是一个完美的地方。@即使是,但假设我将访问令牌存储在父类“App”的本地存储中,当我执行LocalStorage.get()时,子组件“Home”是否仍然可以访问相同的LocalStorage?因为我不了解localStorage的作用域是如何工作的localStorage的作用域是每个域。任何选项卡、任何组件都将具有对同一存储的全局访问权限