Comment puis-je vérifier pour jeton de l'expiration et de la déconnexion de l'utilisateur?
L'utilisateur peut déconnexion lui-même quand il/elle clique sur le bouton de déconnexion, mais si le jeton est expiré il/elle cant déconnexion parce que dans mon application, le jeton est utilisé à la fois côté serveur et front-end. Lorsque l'utilisateur clique sur le bouton de déconnexion, le jeton à la fois le serveur et le navigateur est désactivée si le jeton est valide. Il est probable que, lorsque l'utilisateur n'a pas de journal et ses expiration de ce jeton, mais n'est pas désactivée dans le navigateur. Pour remédier à cette situation, comment puis-je vérifier pour jeton d'expiration à chaque fois que l'utilisateur visite dans mon application, donc si le jeton est expiré, claire le jeton à partir du navigateur?
J'ai essayé dans la saga des montres en arrière-plan chaque fois que l'utilisateur actualise la page ou de passer à une autre page. Je ne pense pas que c'est un moyen efficace. Je pense middleware entre en jeu.
function* loadInitialActions() {
var dateNow = new Date();
console.log(jwtDecode(token).exp < dateNow.getTime() - jwtDecode(token).iat);
const token =
JSON.parse(localStorage.getItem("user")) &&
JSON.parse(localStorage.getItem("user"))["token"];
if (
token &&
jwtDecode(token).exp < dateNow.getTime() - jwtDecode(token).iat
) {
yield put(LOGOUT_SUCCESS);
}
}
function* initialize() {
const watcher = yield fork(loadInitialActions);
yield take([INITIALIZE_ERROR, INITIALIZE_SUCCESS]);
yield cancel(watcher);
}
function* rootSaga() {
console.log("rootSaga");
yield takeLatest(INITIALIZE, initialize);
}
Donc ma question est comment puis-je utiliser le jeton d'expiration de la logique et de la déconnexion de l'utilisateur si le token est expiré depuis le middleware?
OriginalL'auteur Serenity | 2017-07-08
Vous devez vous connecter pour publier un commentaire.
De mon point de vue middleware sera la meilleure option.
Vous pouvez faire quelque chose comme ceci
Vous devez ensuite l'envelopper dans
applyMiddleware
OriginalL'auteur Tushant
Vous avez besoin d'envelopper le composant Principal avec un HOC. Le HOC permettra de valider le jeton et si OK permettre le composant d'affichage. Si le jeton n'est pas valide, la page de connexion est redirigé.
La vérification dans le middleware est une autre option, peut-être mieux. Le package redux-oidc prend cette approche.
Je vous remercie de votre gentillesse et de votre aide. Je pourrais utiliser le middleware mais mon jeton d'expiration de la logique n'est pas de travail. Je vérifie le jeton est expiré ou n'utilisant pas cette condition
if (token && jwtDecode(token).exp < dateNow.getTime()) { next(action); localStorage.clear(); action.type = "Project/App/SHOW_TOKEN_INVALID_MESSAGE"; }
mais en utilisant cette logique même si je suis actuellement connecter, je suis déconnecté parce que sa me dit que mon jeton est expiré. Pouvez-vous m'aider avec le jeton d'expiration de la logique à l'aide de jwt-décoder.OriginalL'auteur vijayst
this.serverResponse.expires_in
est le délai d'expiration en secondes.que vous pouvez l'enregistrer pour le localStorage:
et avec la simple condition que vous pouvez consulter quand vous en avez besoin si le jeton a été expiré.
OriginalL'auteur jonathana