【问题标题】:How can I pass token from SecureStore to axiosInstance headers: Authorization in React-native?如何将令牌从 SecureStore 传递到 axiosInstance 标头:React-native 中的授权?
【发布时间】:2021-08-21 14:57:07
【问题描述】:

如何将令牌从 SecureStore.getItemAsync 传递到 axiosInstance 标头。 getAccessToken() 给了我承诺,我知道我可以做 getAccessToken().then(token=>....),但是我应该如何在这里实现呢?

import axios from 'axios';
import * as SecureStore from 'expo-secure-store'
import { useEffect, useState } from 'react';
const baseURL = 'http://000.000.0.000:8000/api/';

async function getAccessToken(){
    await SecureStore.getItemAsync('access_token')
}

const axiosInstance =
 axios.create({
    baseURL: baseURL,
    timeout: 5000,
    headers: {
        Authorization:  getAccessToken()
            ? 'JWT ' +  getAccessToken()
            : null,
        'Content-Type': 'application/json',
        accept: 'application/json',
    },
});

axiosInstance.interceptors.response.use(
    (response) => {
        console.log(response)
        return response;
    },

);

export default axiosInstance;

【问题讨论】:

    标签: react-native axios


    【解决方案1】:

    你可以使用请求拦截器。

    axios.interceptors.request.use(async req => {
      const access_token = await SecureStore.getItemAsync('access_token')
    
      req.headers.authorization = access_token;
    
      return req;
    });
    

    【讨论】:

    • 应该如何实现?
    • 见我上面的示例。如果不是你想要的,试着用另一种更详细的方式来解释。
    • 是的!非常感谢
    【解决方案2】:

    您可以使用它来更新令牌。

    async function setAccessToken(){
       let token=await SecureStore.getItemAsync('access_token')
       axiosInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`
    }
    

    只需在您的应用启动或您要设置授权令牌的地方调用 setAccessToken。

    【讨论】:

      猜你喜欢
      • 2013-01-21
      • 2018-02-26
      • 2020-05-10
      • 2019-11-12
      • 1970-01-01
      • 2020-03-25
      • 2020-07-03
      • 2011-07-29
      • 2021-07-22
      相关资源
      最近更新 更多