【发布时间】:2019-12-06 07:26:43
【问题描述】:
我的发布请求经常收到 401 未经授权的服务器错误。在数据库中写入项目是微不足道的发布请求。我不知道 AsyncStorage 的详细工作原理,但我读到它就像本地存储。 我知道它是未加密的、异步的、持久的、键值存储系统。
它是 react-native 应用程序,具有 redux 和 saga 以及类似 http 客户端的 axios,后端是 laravel。 在传奇响应中,当用户登录时,我得到 p>
token = eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9wb3Bpcy5taWxzLm1lXC9hcGlcL2F1dGhcL2xvZ2luIiwiaWF0IjoxNTc1NjE1OTg5LCJleHAiOjE1NzU2MTk1ODksIm5iZiI6MTU3NTYxNTk4OSwianRpIjoiMlBRaWVMUjdQT0h4VnZyMCIsInN1YiI6MSwicHJ2IjoiODdlMGFmMWVmOWZkMTU4MTJmZGVjOTcxNTNhMTRlMGIwNDc1NDZhYSJ9.dBYL8H9TVaXxEZgIZB56sbYSHp530D--Lni4klv9SRg
但是在api.js 中,当我想要发布请求以在数据库中写入项目时,我的token 是:
Promise {
"_40": 0,
"_55": null,
"_65": 0,
"_72": null,
}
我的代码是 Api.js:
import axios from 'axios'
import deviceStorage from './services/deviceStorage';
var config = {
headers: {'Authorization': "bearer " + deviceStorage.loadToken()}
};
export function addProduct_api(item) {
return axios.post('http://popis.mils.me/api/popis',item, config)
}
我的传奇是:
export function* addProduct(action) {
const response = yield call(addProduct_api, action.payload)
if(!response || !response.data) {
return yield put(addProduct_failure('Internal server error'))
}
if(response.status === 200) {
return yield put(addProduct_success(response.data))
} else {
return yield put(addProduct_failure('Error for login user'))
}
}
export function* loginUser(action) {
const response = yield call(login_api, action.payload)
if(!response || !response.data) {
return yield put(login_failure('Internal server error for login user'))
}
if(response.status === 200) {
deviceStorage.saveItem('token', response.data.token)
return yield put(login_success(response.data))
} else {
return yield put(login_failure('Error for login user'))
}
}
而我的服务 deviceStorage.js 是:
import { AsyncStorage } from 'react-native';
const deviceStorage = {
async saveItem(key, value) {
try {
await AsyncStorage.setItem(key, value)
} catch (error) {
}
},
async loadToken() {
try {
const token = AsyncStorage.getItem('token')
console.log('token in service--------------------------------', token);
return token
} catch (error) {
console.log('Load token error: ', error);
}
return token
}
}
export default deviceStorage
【问题讨论】:
标签: reactjs react-native redux axios redux-saga