1
votes

Réagir l'utilisateur natif de déconnexion s'il est inactif ou inactif pendant un certain temps

J'utilise react-redux et je dois pouvoir déconnecter l'utilisateur s'il est inactif pendant 10 minutes (pas de contact sur l'écran) ou si l'application passe en arrière-plan. Comment dois-je faire ça?

J'ai essayé de créer une minuterie dans mon conteneur racine et de mettre à jour le réducteur qui se met à jour toutes les x secondes environ, et j'ai utilisé un mouvement de panoramique pour réinitialiser la minuterie en cas de contact. Mais cela n'a pas fonctionné, car chaque fois que l'état du redux est mis à jour, mon application s'actualisera.

Quelqu'un a-t-il des solutions? J'ai essayé de chercher un package npm qui fait quelque chose de similaire mais je n'ai pas de chance.


0 commentaires

3 Réponses :


0
votes

Vous pouvez intégrer ce package npm react-native-background-timer Cela peut exécuter un bloc de code (fonction de déconnexion) après l'intervalle de temps spécifié.


0 commentaires

0
votes

La meilleure façon de protéger et de limiter le temps de connexion utilise le jeton JWT pour le sécuriser et la durée limite de la session que vous souhaitez fermer après un certain temps


0 commentaires

1
votes

Vous pouvez utiliser https://facebook.github.io/react-native/ docs / appstate pour savoir quand l'application est en arrière-plan ou au premier plan.

Ainsi, lorsque l'application passe en arrière-plan, vous pouvez envoyer une action en définissant l'heure actuelle.

Et quand l'application arrive au premier plan, vous vérifiez la différence entre l'heure actuelle et l'heure d'expédition (lorsque l'application est passée en arrière-plan). Vous pouvez faire ce que vous voulez si la condition correspond.

componentDidMount() {
    AppState.addEventListener('change', this._handleAppStateChange);
}

componentWillUnmount() {
    AppState.removeEventListener('change', this._handleAppStateChange);
}

_handleAppStateChange = (nextAppState) => {
    const { appState } = this.state;
    if (appState.match(/inactive|background/) && nextAppState === 'active') {

        // Compare Current Time with Dispatched Time Here

    } else if (appState.match(/inactive|active/) && nextAppState === 'background') {

        // Dispatch current time here.

    }
    this.setState({appState: nextAppState});
};


0 commentaires