G
G
Greeg Zagrelov2020-02-11 18:09:37
Node.js
Greeg Zagrelov, 2020-02-11 18:09:37

What's wrong with creating authentication?

I master vue and nodjs I do authentication I don’t understand what the error is.
did everything right!
https://webdevblog.ru/vue-js-autentifikaciya-i-obr...
5e42cf4a380c3585132808.jpeg
5e42c322920c7026869776.jpeg
5e42c32756ed6022289583.jpeg

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import Login from '@/components/Login'
import Register from '@/components/Register'
import UserBoard from '@/components/UserBoard'
import Admin from '@/components/Admin'

Vue.use(Router)
let router = new Router({
  mode: 'history',
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    },
    {
      path: '/login',
      name: 'login',
      component: Login,
      meta: {
        guest: true
      }
    },
    {
      path: '/register',
      name: 'register',
      component: Register,
      meta: {
        guest: true
      }
    },
    {
      path: '/dashboard',
      name: 'userboard',
      component: UserBoard,
      meta: {
        requiresAuth: true
      }
    },
    {
      path: '/admin',
      name: 'admin',
      component: Admin,
      meta: {
        requiresAuth: true,
        is_admin : true
      }
    },
  ]
})

// Мы проверяем несколько вещей:
//
//   если для маршрута указан requiresAuth, проверяем токен jwt, показывающий, что пользователь вошел в систему.
//   если для маршрута указан requiresAuth и оно предназначено только для пользователей с правами администратора, проверяем аутентификацию и проверяем, является ли пользователь администратором.
//   если для маршрута указан guest, проверяем, вошел ли пользователь в систему
router.beforeEach((to, from, next) => {
  if(to.matched.some(record => record.meta.requiresAuth)) {
    if (localStorage.getItem('jwt') == null) {
      next({
        path: '/login',
        params: { nextUrl: to.fullPath }
      })
    } else {
      let user = JSON.parse(localStorage.getItem('user'))
      if(to.matched.some(record => record.meta.is_admin)) {
        if(user.is_admin == 1){
          next()
        }
        else{
          next({ name: 'userboard'})
        }
      }else {
        next()
      }
    }
  } else if(to.matched.some(record => record.meta.guest)) {
    if(localStorage.getItem('jwt') == null){
      next()
    }
    else{
      next({ name: 'userboard'})
    }
  }else {
    next()
  }
})

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question