首页 > 解决方案 > 如何将令牌从 SecureStore 传递到 axiosInstance 标头:React-native 中的授权?

问题描述

如何将令牌从 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-nativeaxios

解决方案


您可以使用请求拦截器。

axios.interceptors.request.use(async req => {
  const access_token = await SecureStore.getItemAsync('access_token')

  req.headers.authorization = access_token;

  return req;
});

推荐阅读