我有一个react登录页面,它接受用户名和密码。输入用户名和密码后,凭据将针对json (API)文件进行处理,该文件为客户端生成令牌。,我的目标是在客户端登录并使用客户端各自的数据填充下拉列表之后,将令牌传递给登陆页面。我面临的问题是让客户端令牌从我的登录页面传递到登陆页面。
在我的登录页面中,我使用Fetch从API检索令牌,然后使用会话存储存储令牌。获取令牌的代码片段:
componentDidMount() {
this.fetchData();
}
//request the token
fetchData() {
return fetch('http://myapiaut:1111/api/auth', {
method: 'POST',
headers: {
'Content-type': 'application/json',
},
body: JSON.stringify({
username: 'myAdminusername',
password: 'myAdminPassword',
Authorization: 'myAdminPassword',
})
}) /*end fetch */
.then(results => results.json())
.then(data => {
this.setState({ data: data })
sessionStorage.setItem("token", data)
})
}
//authenticate request
requestUserInfo() {
var token = sessionStorage.getItem("token");
return fetch('http://myapiaut:1111/api/auth', {
method: 'GET',
headers: new Headers({
Authorization: 'Bearer' + sessionStorage.token
}),
})
.then((response) => response.json());
}登陆页
componentDidMount() {
fetch('http://myapiclients:22222/api/clients', {
method: 'GET',
headers: {
'Content-type': 'application/json',
'Authorization': 'Bearer ' + sessionStorage.token
},
})
.then(results => results.json())
.then(data => this.setState({ data: data }))
}...going返回到登录页面,我确认正在通过fetchData函数获得令牌,但遇到的问题是正确地存储令牌,以便将其传递给登陆页。
FYI-我已经构建了登陆页,当我手动将生成的令牌复制到获取的授权部分时,它正常工作。...Could,请问我做错了什么?
发布于 2018-05-12 19:55:01
问题在于:
.then(data => this.setState({ data: data })) .then(data => sessionStorage.setItem('token',data))
setState不解析Promise,所以它没有then()
将其改为类似于:
.then(data => {
this.setState({ data: data })
sessionStorage.setItem('token', data)
})在登陆页:
componentDidMount() {http://myapiclients/api/clients',{http://myapiclients/api/clients',{ method:'GET',headers:{‘Content’:'application/json',‘授权’:‘承载${ token }’//令牌未定义!},).then( => results.json()) .then(data => this.setState({ data: data })) }
令牌没有定义,因此它将是'Bearer‘,或者在fetch(...)之前用sessionStorage.getItem("token")定义它,或者在fetch头中执行如下操作:
'Authorization': 'Bearer ' + sessionStorage.tokenhttps://stackoverflow.com/questions/50309287
复制相似问题