IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VueJS Discussion :

Déconnexion automatique dès que la page actualise


Sujet :

VueJS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    En formation
    Inscrit en
    Juillet 2020
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : En formation

    Informations forums :
    Inscription : Juillet 2020
    Messages : 124
    Par défaut Déconnexion automatique dès que la page actualise
    Bonjour,

    J'ai une déconnexion automatique dès que la page s'actualise, je ne comprends pas d'où cela peut venir car je n'ai rien prévu de telle . Alors je ne sais quoi présenter comme code sur mon post que j'écris, afin que vous puissiez voir. SI quelqu'un aurais une idée de où je pourrais vérifier mon code. ou quel partie du code partager afin de voir .

    Merci par avance.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 348
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 348
    Billets dans le blog
    17
    Par défaut
    Comment gères-tu ta session ?

  3. #3
    Membre confirmé
    Homme Profil pro
    En formation
    Inscrit en
    Juillet 2020
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : En formation

    Informations forums :
    Inscription : Juillet 2020
    Messages : 124
    Par défaut
    Salut @Séb,

    J'ai vu que le problème vient des intercepteurs de navigations , lorsque je commente cette partie de code , je peux actualiser sans être déconnecté. Je te montre mon code voir si tu peux me dire ou il y a une erreur. Je te remercie par avance.
    Dans mon fichier : store/index.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    import Vue from 'vue'
    import Vuex from 'vuex'
     
    Vue.use(Vuex)
     
    export default new Vuex.Store({
      state: {
        authenticated: false,
     
      },
      mutations: {
        setAuthentication(state, status){
          state.authenticated = status;
        }
      },
      actions: {
      },
      modules: {
      }
    })
    Et voici comme il est utilisé dans mes routes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    import Vue from 'vue'
    import  VueRouter  from 'vue-router'
    import Home from '../views/Home.vue'
    import storeSecure from '../store/index'
     
     
     
    Vue.use(VueRouter)
    const routes = [
      {
        path: '/',
        name: 'Home',
        component: Home
      },
      {
        path: '/signup',
        name: 'Inscription',
        component: () => import('../views/Signup.vue')
      },
      {
        path: '/login',
        name: 'Connexion',
        component: () => import('../views/Login.vue'),
      },
      {
        path: '/account',
        name: 'Account',
        component: () => import('../views/Account.vue'),
        beforeEnter: (to, from, next)=>{
          if(storeSecure.state.authenticated == false){
            next()
          }else{
            next();
          }
        } 
      },
      {
        path: '/post',
        name: 'Post',
        component: () => import('../views/Post.vue'),
        beforeEnter: (to, from, next)=>{
          if(storeSecure.state.authenticated == false){
            next()
          }else{
            next();
          }
        } 
      },
      {
        path: '*',
        redirect: '/'
      },
    ]
     
     
    const router = new VueRouter({
      mode: 'history',
      base: process.env.BASE_URL,
      routes
    })
     
     
     
    export default router

  4. #4
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par défaut
    salut, quand tu rafraîchis la page, ton appli recommence au début : tu crées ton store avec pour valeur authenticated à false.

    tu peux au démarrage de l'appli définir authenticated à null, qui est un marqueur pour savoir si tu dois déterminer si l'utilisateur est authentifié, puis que tu mettes à jour ton store en conséquence.

    par exemple...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    // ...
     
    // dans ton state, la valeur authenticated 
    // est par défaut null
    state: {
      authenticated: null,
    },
     
    // ...
     
    // Une fonction qui testés la connexion. 
    // Idéalement, il faut interroger le serveur
    function initAuthenticated(){
      const { authenticated } = store.state;
      if (authenticated !== null) {
        return Promise.resolve();
      }
      return fetch('.../isAuthenticated')
        .then(() => true)
        .catch(() => false)
        .then((authenticated) => store.commit('setAuthentication', authenticated))
    }
     
     
    beforeEnter(to, from, next) {
      initAuthenticated().then(() => {
      if (store.state.authenticated) {
        next();
      } else {
        next('signin');
      }
    }

  5. #5
    Membre confirmé
    Homme Profil pro
    En formation
    Inscrit en
    Juillet 2020
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : En formation

    Informations forums :
    Inscription : Juillet 2020
    Messages : 124
    Par défaut
    Salut @gwyohm,

    Merci pour ta réponse, la fonction faut la placer dans la partie router ou store ? Car j'ai essayé de la placer mais j'ai des erreurs qui s'affiche.

  6. #6
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par défaut
    t'as quoi comme erreur ?
    la fonction doit être accessible dans ton routeur
    Elle doit avoir accès au store
    dans le code que j'ai mis, il manque une qutoe sur l'url du fetch...

  7. #7
    Membre confirmé
    Homme Profil pro
    En formation
    Inscrit en
    Juillet 2020
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : En formation

    Informations forums :
    Inscription : Juillet 2020
    Messages : 124
    Par défaut
    j'ai plus l erreur comme tu m'as dit la ' , j'ai comme ça comme tu m'as dit mais je peux accéder à la page :
    Code router
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    import Vue from 'vue'
    import  VueRouter  from 'vue-router'
    import Home from '../views/Home.vue'
    import storeSecure from '../store/index'
    import store from '../store/index'
     
    function initAuthenticated(){
      const { authenticated } = store.state;
      if (authenticated !== null) {
        return Promise.resolve();
      }
      return fetch('http://localhost:3000/api/auth/user/login/isAuthenticated')
        .then(() => true)
        .catch(() => false)
        .then((authenticated) => store.commit('setAuthentication', authenticated))
    }
     
    Vue.use(VueRouter)
    const routes = [
      {
        path: '/',
        name: 'Home',
        component: Home
      },
      {
        path: '/signup',
        name: 'Inscription',
        component: () => import('../views/Signup.vue')
      },
      {
        path: '/login',
        name: 'Connexion',
        component: () => import('../views/Login.vue'),
      },
      {
        path: '/Account',
        name: 'Account',
        component: () => import('../views/Account.vue'),
        beforeEnter(to, from, next) {
          initAuthenticated().then(() => {
          if (store.state.authenticated) {
            next();
          } else {
            next('signin');
          }
        })
      }
      },
      {
        path: '/post',
        name: 'Post',
        component: () => import('../views/Post.vue'),
     
        } 
      },
      {
        path: '*',
        redirect: '/'
      },
    ]
     
     
    const router = new VueRouter({
      mode: 'history',
      base: process.env.BASE_URL,
      routes
    })
    code du store
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    import Vue from 'vue'
    import Vuex from 'vuex'
     
    Vue.use(Vuex)
     
    export default new Vuex.Store({
      state: {
        authenticated: null,
      },
      mutations: {
        setAuthentication(state, status){
          state.authenticated = status;
        }
     
      },
      actions: {
      },
      modules: {
      }
    })

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/12/2006, 18h26
  2. css dans un dossier différent que la page html
    Par zespoofiz dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 22/05/2006, 13h29
  3. Afficher popup que sur page d'accueil !!
    Par Chronax dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 04/05/2006, 14h44
  4. texte automatiquement en bas de page, bottom?
    Par zorba49 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/03/2006, 14h53
  5. Comment puis je faire pour que'une page soir rechargees....
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/12/2005, 10h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo