I constantly get 401 unauthorized server error for my post request. It is trivial post request to write item in database. I do't know how AsyncStorage work in details, but i read it is like local storage. I know it is unencrypted, asynchronous, persistent, key-value storage system.
It is react-native app, with redux and saga and axios like http client, backend is laravel. In saga response, when user is logged in, i get
token = eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9wb3Bpcy5taWxzLm1lXC9hcGlcL2F1dGhcL2xvZ2luIiwiaWF0IjoxNTc1NjE1OTg5LCJleHAiOjE1NzU2MTk1ODksIm5iZiI6MTU3NTYxNTk4OSwianRpIjoiMlBRaWVMUjdQT0h4VnZyMCIsInN1YiI6MSwicHJ2IjoiODdlMGFmMWVmOWZkMTU4MTJmZGVjOTcxNTNhMTRlMGIwNDc1NDZhYSJ9.dBYL8H9TVaXxEZgIZB56sbYSHp530D--Lni4klv9SRg
But in api.js
when I want to do post request to write item in datebase my token
is:
Promise {
"_40": 0,
"_55": null,
"_65": 0,
"_72": null,
}
My code is 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)
}
my Saga is:
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'))
}
}
and my service deviceStorage.js is:
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