You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Navigation Guards (En) <br><br> *Cette page est en cours de traduction française. Revenez une autre fois pour lire une traduction achevée ou [participez à la traduction française ici](https://github.com/vuejs-fr/vue-router).*
1
+
# Sécurisations de navigation
2
2
3
-
As the name suggests, the navigation guards provided by `vue-router`are primarily used to guard navigations either by redirecting it or canceling it. There are a number of ways to hook into the route navigation process: globally, per-route, or in-component.
3
+
Comme le nom le suggère, la sécurisation de navigation fournie par `vue-router`est principalement utilisée pour sécuriser sa navigation avec des redirections ou des annulations d'accès. Il y a plusieurs hooks disponibles lors du processus de navigation : globaux, par routes ou intra-composant.
4
4
5
-
Remember that **params or query changes won't trigger enter/leave navigation guards**. You can either [watch the`$route` object](../essentials/dynamic-matching.md#reacting-to-params-changes)to react to those changes, or use the `beforeRouteUpdate`in-component guard.
5
+
Souvenez-vous de cela : **le changement de paramètre ou de query ne va pas lancer de sécurisation d'entrée ou de sortie de navigation**. Vous pouvez toujours [observer l'objet`$route`](../essentials/dynamic-matching.md#reacting-to-params-changes)pour réagir à ces changements, ou utiliser la fonction `beforeRouteUpdate`d'une sécurisation intra-composant.
6
6
7
-
### Global Guards
7
+
### Sécurisation globale
8
8
9
-
You can register global before guards using `router.beforeEach`:
9
+
Vous pouvez abonner une sécurisation d'entrée en utilisant `router.beforeEach`:
Global before guards are called in creation order, whenever a navigation is triggered. Guards may be resolved asynchronously, and the navigation is considered **pending**before all hooks have been resolved.
19
+
Les sécurisations d'entrées globales sont appelées lors de l'ordre de création, chaque fois qu'une navigation est déclenchée. Les sécurisations peuvent être résolues de manière asynchrone, et la navigation est considérée comme **en attente**avant que tous les hooks ne soient résolues.
20
20
21
-
Every guard function receives three arguments:
21
+
Chaque fonction de sécurisation reçoit trois arguments:
22
22
23
-
-**`to: Route`**: the target [Route Object](../api/route-object.md)being navigated to.
23
+
-**`to: Route`**: L'[objet `Route`](../api/route-object.md)cible vers lequel on navigue.
24
24
25
-
-**`from: Route`**: the current route being navigated away from.
25
+
-**`from: Route`**: la route courante depuis laquelle nous venons de naviguer.
26
26
27
-
-**`next: Function`**: this function must be called to**resolve**the hook. The action depends on the arguments provided to`next`:
27
+
-**`next: Function`**: cette fonction doit être appelée pour**résoudre**le hook. L'action dépend des arguments fournis à`next`:
28
28
29
-
-**`next()`**: move on to the next hook in the pipeline. If no hooks are left, the navigation is**confirmed**.
29
+
-**`next()`**: se déplacer jusqu'au prochain hook du workflow. S'il ne reste aucun hooks, la navigation est**confirmée**.
30
30
31
-
-**`next(false)`**: abort the current navigation. If the browser URL was changed (either manually by the user or via back button), it will be reset to that of the `from` route.
31
+
-**`next(false)`**: annuler la navigation courante. Si l'URL du navigateur avait changée (manuellement par l'utilisateur ou via le bouton retour du navigateur), elle sera remise à sa valeur de route de `from`.
32
32
33
-
-**`next('/')`or`next({ path: '/' })`**: redirect to a different location. The current navigation will be aborted and a new one will be started.
33
+
-**`next('/')`ou`next({ path: '/' })`**: redirige vers la nouvelle URL. La navigation courante va être arrêtée et une nouvelle va se lancer.
34
34
35
-
-**`next(error)`**: (2.4.0+) if the argument passed to`next`is an instance of`Error`, the navigation will be aborted and the error will be passed to callbacks registered via `router.onError()`.
35
+
-**`next(error)`**: (2.4.0+) si l'argument passé à`next`est une instance de`Error`, la navigation va s'arrêter et l'erreur sera passée aux fonctions de rappel via `router.onError()`.
36
36
37
-
**Make sure to always call the`next` function, otherwise the hook will never be resolved.**
37
+
**Assurez-vous de toujours appeler la fonction`next`, sinon le hook ne sera jamais résolu.**
38
38
39
-
### Global Resolve Guards
39
+
### Résolutions des sécurisations globales
40
40
41
-
> New in 2.5.0
41
+
> Nouveau dans la 2.5.0
42
42
43
-
In 2.5.0+ you can register a global guard with`router.beforeResolve`. This is similar to`router.beforeEach`, with the difference that resolve guards will be called right before the navigation is confirmed, **after all in-component guards and async route components are resolved**.
43
+
Dans la 2.5.0+ vous pouvez abonner une sécurisation globale avec`router.beforeResolve`. Ceci est similaire a`router.beforeEach`, mais la différence est qu'elle sera appelée juste après que la navigation soit confirmée, **après que toutes les sécurisations intra-composants et les composants de route asynchrone ai été résolus**.
44
44
45
-
### Global After Hooks
45
+
### Hooks de sortie globaux
46
46
47
-
You can also register global after hooks, however unlike guards, these hooks do not get a `next`function and cannot affect the navigation:
47
+
Vous pouvez également abonner des hooks de sortie, cependant, à la différence des sécurisations, ces hooks ne fournissent pas de fonction `next`et n'affecte pas la navigation:
48
48
49
49
```js
50
50
router.afterEach((to, from) => {
51
51
// ...
52
52
})
53
53
```
54
54
55
-
### Per-Route Guard
55
+
### Sécurisation par route
56
56
57
-
You can define `beforeEnter`guards directly on a route's configuration object:
57
+
Vous pouvez définir la sécurisation `beforeEnter`directement sur l'objet de configuration d'une route :
58
58
59
59
```js
60
60
constrouter=newVueRouter({
@@ -70,65 +70,65 @@ const router = new VueRouter({
70
70
})
71
71
```
72
72
73
-
These guards have the exact same signature as global before guards.
73
+
Ces sécurisations ont exactement le même effet que les sécurisations globales d'entrée.
74
74
75
75
### Sécurisation intra-composants
76
76
77
-
Finally, you can directly define route navigation guards inside route components (the ones passed to the router configuration) with the following options:
77
+
Enfin, vous pouvez directement définir une sécurisation de navigation a l'intérieur du composant lui-même (celui passer à la configuration du routeur) avec les options suivantes :
78
78
79
79
-`beforeRouteEnter`
80
-
-`beforeRouteUpdate` (added in 2.2)
80
+
-`beforeRouteUpdate` (ajouté dans la 2.2)
81
81
-`beforeRouteLeave`
82
82
83
83
```js
84
84
constFoo= {
85
85
template:`...`,
86
86
beforeRouteEnter (to, from, next) {
87
-
//called before the route that renders this component is confirmed.
88
-
//does NOT have access to `this` component instance,
89
-
//because it has not been created yet when this guard is called!
87
+
//appelée avant que la route vers le composant soit confirmée.
88
+
//cette fonction n'a pas accès à l'instance du composant avec `this`,
89
+
//car le composant n'a pas encore été créé quand cette sécurisation est appelée !
90
90
},
91
91
beforeRouteUpdate (to, from, next) {
92
-
//called when the route that renders this component has changed,
93
-
//but this component is reused in the new route.
94
-
//For example, for a route with dynamic params /foo/:id, when we
95
-
//navigate between /foo/1 and /foo/2, the same Foo component instance
96
-
//will be reused, and this hook will be called when that happens.
97
-
//has access to `this` component instance.
92
+
//appelée quand la route qui fait le rendu de ce composant change,
93
+
//mais que ce composant est utilisé de nouveau dans la nouvelle route.
94
+
//Par exemple, pour une route avec le paramètre dynamique `/foo/:id`, quand nous
95
+
//naviguons entre `/foo/1` et `/foo/2`, le même instance du composant `Foo`
96
+
//va être ré-utilisée, et ce hook va être appelé quand cela arrivera.
97
+
//ce hook a accès à l'instance de ce composant via `this`.
98
98
},
99
99
beforeRouteLeave (to, from, next) {
100
-
//called when the route that renders this component is about to
101
-
//be navigated away from.
102
-
//has access to `this` component instance.
100
+
//appelée quand la route qui fait le rendu de ce composant est sur le point
101
+
//d'être laissée en faveur de la prochaine route.
102
+
//elle a accès à l'instance de ce composant via `this`.
103
103
}
104
104
}
105
105
```
106
106
107
-
The `beforeRouteEnter`guard does **NOT**have access to `this`, because the guard is called before the navigation is confirmed, thus the new entering component has not even been created yet.
107
+
La sécurisation `beforeRouteEnter`**n'**a **PAS**accès à `this`, car la sécurisation est appelée avant que la navigation soit confirmée, et le nouveau composant entrant n'a même pas encore été crée.
108
108
109
-
However, you can access the instance by passing a callback to `next`. The callback will be called when the navigation is confirmed, and the component instance will be passed to the callback as the argument:
109
+
Cependant, vous pouvez accéder à l'instance en passant dans la fonction de rappel `next`. Cette fonction de rappel va être appelée quand la navigation sera confirmée, et l'instance du composant sera passée à la fonction de rappel en tant qu'argument:
110
110
111
111
```js
112
112
beforeRouteEnter (to, from, next) {
113
113
next(vm=> {
114
-
//access to component instance via `vm`
114
+
//accèr à l'instance du composant via `vm`
115
115
})
116
116
}
117
117
```
118
118
119
-
You can directly access `this`inside `beforeRouteLeave`. The leave guard is usually used to prevent the user from accidentally leaving the route with unsaved edits. The navigation can be canceled by calling`next(false)`.
120
-
121
-
### The Full Navigation Resolution Flow
122
-
123
-
1.Navigation triggered
124
-
2.Call leave guards in deactivated components
125
-
3.Call global `beforeEach` guards
126
-
4.Call `beforeRouteUpdate`guards in reused components (2.2+)
127
-
5.Call `beforeEnter`in route configs
128
-
6.Resolve async route components
129
-
7.Call `beforeRouteEnter`in activated components
130
-
8.Call global `beforeResolve`guards (2.5+)
131
-
9.Navigation confirmed.
132
-
10.Call global `afterEach` hooks.
133
-
11.DOM updates triggered.
134
-
12.Call callbacks passed to `next`in `beforeRouteEnter`guards with instantiated instances.
119
+
Vous pouvez directement accéder à `this`à l'intérieur de `beforeRouteLeave`. La sécurisation de sortie est utilisée pour empêcher l'utilisateur de quitter la route par accident alors qu'il n'a pas sauver ses modifications. La navigation peut être annulée en appelant`next(false)`.
120
+
121
+
### Le flux de résolution de navigation complet
122
+
123
+
1.La navigation est demandée,
124
+
2.Appel de la sécurisation de sortie des composants désactivés (ceux que l'on va quitter),
125
+
3.Appel des sécurisations globales `beforeEach`,
126
+
4.Appel des sécurisations `beforeRouteUpdate`pour les composants ré-utilisés (2.2+),
127
+
5.Appel de `beforeEnter`dans la configuration de route,
128
+
6.Résolution des composants de route asynchrones,
129
+
7.Appel de `beforeRouteEnter`dans les composants activés (ceux où l'on va arriver),
130
+
8.Appel des sécurisations `beforeResolve` (2.5+),
131
+
9.Confirmation de la navigation,
132
+
10.Appel des hooks globaux `afterEach`,
133
+
11.Modification du DOM demandées,
134
+
12.Appel des fonctions de rappel passées à `next`dans la sécurisation `beforeRouteEnter`avec l'instance instanciée.
0 commit comments