Tengo este código que autentica la sesión del usuario tomando su token y enviándolo a AWS-amplify para garantizar que su token no se haya agotado y que sea un usuario válido.
import {Auth} from 'aws-amplify'; export async function getAccessToken() { try { // const currentUser = await Auth.currentAuthenticatedUser(); // console.log(currentUser); return await Auth .currentSession() .then(res => { let accessToken = res.getAccessToken(); let jwt = accessToken.getJwtToken(); // You can print them to see the full objects // console.log(`myAccessToken: ${JSON.stringify(accessToken)}`); // console.log(`myJwt: ${JSON.stringify(jwt)}`); return jwt }); } catch (error) { console.log(error); } }Esto se llama cuando se realiza CUALQUIER llamada de punto final, porque quiero asegurarme de que el usuario haya sido validado por aws-amplify. Entonces, por ejemplo, podría tener algún código que haga algo como
function getSomething() { getAccessToken().then(token => { const config = { headers: { Authorization: `Bearer ${token}` } }; axios .get(<url>, config) .then(response => { console.log(response.data) setData(response.data); }) .catch(error => { console.log(JSON.stringify(error)); }); }).catch(error => { console.log(JSON.stringify(error)); });; };Por lo tanto, cada llamada de punto final de mi aplicación requiere el token de acceso y, si no se autentica correctamente, el backend devolverá un 401. Si se recibe 401, quiero que los usuarios vuelvan automáticamente a iniciar sesión en todas y cada una de las pantallas (excepto el inicio de sesión, por supuesto)
para la navegación que estoy usando
const NavigatorTab = ({navigation}) => { y simplemente configurando el parámetro de navigation .