I am building an admin page with Vue.js 2 and I want to prevent unauthenticated users from accessing the /admin
route and redirect them to /login
. For that I have used the In-Component Guard beforeRouteEnter
in the Admin component like follows
...
beforeRouteEnter(to, from, next) {
if(userNotLogedIn) {
this.$router.push('/login');
}
}
The problem here is that this
is not defined in beforeRouteEnter
hook. So what's the proper way to access $router
and redirect to a different url in this case ?
The documentation states that:
You can redirect to another page by calling
next
like this:Here is another way to accomplish the same result: So instead of using
beforeRouteEnter
on each protected route, you could define protected routes in your router configuration using ameta
property, then usebeforeEach
hook on all the routes and check for protected routes and redirect to login page when needed: