首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用会话存储在页之间传递值

如何使用会话存储在页之间传递值
EN

Stack Overflow用户
提问于 2018-05-12 18:09:00
回答 1查看 5.4K关注 0票数 4

我有一个react登录页面,它接受用户名和密码。输入用户名和密码后,凭据将针对json (API)文件进行处理,该文件为客户端生成令牌。,我的目标是在客户端登录并使用客户端各自的数据填充下拉列表之后,将令牌传递给登陆页面。我面临的问题是让客户端令牌从我的登录页面传递到登陆页面。

在我的登录页面中,我使用Fetch从API检索令牌,然后使用会话存储存储令牌。获取令牌的代码片段:

代码语言:javascript
复制
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());
      }

登陆页

代码语言:javascript
复制
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,请问我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2018-05-12 19:55:01

问题在于:

.then(data => this.setState({ data: data })) .then(data => sessionStorage.setItem('token',data))

setState不解析Promise,所以它没有then()

将其改为类似于:

代码语言:javascript
复制
.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头中执行如下操作:

代码语言:javascript
复制
'Authorization': 'Bearer ' + sessionStorage.token
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50309287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档