Laravel 5.6 + маршрутизатор приложения vue.js + паспорт laravel - PullRequest
0 голосов
/ 03 ноября 2018

Я тестирую приложение Laravel5.6 + Vue, я активировал Laravel Auth и Passport.

Мой проект:

  • API использует Laravel Passport.

  • Web Laravel Auth активен.

  • Приложение Vue

Поскольку Laravel Auth активен, похоже, что Auth запускает и проверяет сеанс пользователя, если он входит в систему или нет, и перенаправляет на Auth / вход по маршруту.

Когда я отключаю аутентификационные маршруты в web.php, возникает ошибка.

// Auth::routes();

Error

InvalidArgumentException
Route [login] not defined.

Так как я использую приложение Vue и Laravel API с Passport, как можно избежать Laravel web Auth для проверки приложения Vue?

web.php

Auth::routes();
Route::get('{any}', 'HomeController@index')->name('home')->where('any','.*');

api.php

    Route::group([
        'prefix' => 'auth'
    ], function () {
        Route::group(['middleware' => 'auth:api'], function() {
            Route::get('logout', 'API\AuthController@logout');
            Route::get('user', 'API\AuthController@user');

        });
    });
    Route::group(['middleware' => 'auth:api'], function() {

        Route::get('/application/all', 'ApplicationController@index');

    });

    Route::post('/auth/login', 'API\AuthController@login');
    Route::post('/auth/register', 'API\AuthController@register');
Вью

routes.js

import Home из './components/Home.vue';

    import Login from './components/auth/Login.vue';
    import Logout from './components/auth/Logout.vue';
    import Profile from './components/auth/Profile.vue';
    import Register from './components/auth/Register.vue';

    import ApplicationList from './components/content-app/ApplicationList.vue';


    export const routes = [
        {
            path: '/',
            component: Home,
            meta: {
                requiresVisitor: true,
            }
        },
        {
            name: 'user-login',
            path: '/user/login',
            component: Login,
            meta: {
                requiresVisitor: true,
            }
        },
        {
            name: 'user-register', 
            path: '/user/register',
            component: Register,
            meta: {
                requiresVisitor: true,
            }
        },
        {
            name: 'user-profile', 
            path: '/user/profile',
            component: Profile,
            meta: {
                requiresAuth: true,
            }
        },
        {
            path: '/logout',
            component: Logout,
            meta: {
                requiresAuth: true,
            }
        },
        {
            path: '/content/application-list',
            component: ApplicationList,
            meta: {
                requiresAuth: true,
            }
        }
    ];

app.js

требуется ( './ самонастройки');

  import Vue from 'vue';
  import VueRouter from 'vue-router';
  import Vuex from 'vuex';
  import axios from 'axios'

  import {routes} from './routes';
  import StoreDate from './store';
  import MainApp from './components/MailApp.vue';


  Vue.use(VueRouter);
  Vue.use(Vuex);

  const store = new Vuex.Store(StoreDate);

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

  router.beforeEach((to, from, next) => {
    if (to.matched.some(record => record.meta.requiresAuth)) {
      // this route requires auth, check if logged in
      // if not, redirect to login page.
      if (!store.getters.loggedIn) {
        next({
          path: '/login',
          query: { auth: 'unauthenticated' } //query: { redirect: to.fullPath }
        })
      } else {
        next()
      }
    } else if (to.matched.some(record => record.meta.requiresVisitor)) {
      if (store.getters.loggedIn && (to.path == '/login' || to.path == '/register')) {
        next({
          path: '/profile',
        })
      } else {
        next()
      }
    } else {
      next() // make sure to always call next()!
    }
  })


  const app = new Vue({
      el: '#app',
      router,
      store,
      components: {
          MainApp
      }
  });


  /////////  OVER WRITING JS
  $('.navbar-nav>li>a').on('click', function(){
      $('.navbar-collapse').collapse('hide');
  });
  $('.navbar-nav>navbar-brand').on('click', function(){
      $('.navbar-collapse').collapse('hide');
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...