Vue Router и Laravel Middlewares - PullRequest
       0

Vue Router и Laravel Middlewares

0 голосов
/ 26 сентября 2018

У меня в приложениях разные маршруты:

GET /game/{any}

Этот маршрут защищен промежуточным программным обеспечением Laravel auth.Внутри этого маршрута Laravel я хочу построить SPA и предоставить маршрутизатор Vue:

const routes = [
  { path: '/game/start', component: GameStart },
  { path: '/game/stats', component: GameStats }
]

И у меня есть «основной» маршрут, который не защищен промежуточным ПО Laravel

GET /{any}

Whole Vue Routerвыглядит следующим образом:

const routes = [
      // Not protected URLs
      { path: '/', component: Main },
      { path: '/news', component: News },

      // Protected URLs
      { path: '/game/start', component: GameStart },
      { path: '/game/stats', component: GameStats }
    ]

Итак, мой вопрос: это хорошая идея, чтобы смешать бэк-энд и фронт-энд, как это?Потому что я предполагаю, что маршрутизаторы '/ game / *' не защищены во внешней части.

Или мне следует использовать Laravel Passport и токен для аутентификации на frond-end?

1 Ответ

0 голосов
/ 11 декабря 2018

Вы должны использовать Laravel Passport и авторизацию токена на внешнем интерфейсе, используя мета-вызов и обратный вызов vue-router (beforeEach).

rout.js

...

export const routes = [
  { path: '/game/start', component: GameStart, meta: { requiresAuth: true } },
  { path: '/game/stats', component: GameStats, meta: { requiresAuth: true } },
  { path: '/signin', component: SigninPage },
  { path: '*', redirec: '/' }
];

router.js

import VueRouter from 'vue-router';
import { routes } from './routes';
import store from './store'

export const router = new VueRouter({
  routes,
  mode: 'history'
});

router.beforeEach((to, from, next) => {
  // you could define your own authentication logic with token
  let isAuthenticated = store.getters.isAuthenticated

  // check route meta if it requires auth or not
  if(to.matched.some(record => record.meta.requiresAuth)) {
    if (!isAuthenticated) {
      next({
          path: '/signin',
          params: { nextUrl: to.fullPath }
      })
    } else {
      next()
    }
  } else {
    next()
  }
})

export default router
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...