如何使用Laravel Api路由和Vue 2 Js和Vue路由器对用户进行身份验证

如何使用Laravel Api路由和Vue 2 Js和Vue路由器对用户进行身份验证,laravel,laravel-5.2,laravel-routing,vue-router,axios,Laravel,Laravel 5.2,Laravel Routing,Vue Router,Axios,我的目标是,laravel为我们提供一个已实现的授权提供程序 因此,我想通过API对我的用户进行身份验证,并将其设置回我的Vue路由器 并授权用户 我如何实现它 我总是在身份验证时出错 我使用axios作为我的HTTP提供程序 这是app.js require('./bootstrap'); import VueRouter from 'vue-router'; import Vue from 'vue' import axios from 'axios' import VueAxios

我的目标是,laravel为我们提供一个已实现的授权提供程序

因此,我想通过API对我的用户进行身份验证,并将其设置回我的Vue路由器

并授权用户

我如何实现它

我总是在身份验证时出错

我使用axios作为我的HTTP提供程序

这是app.js

require('./bootstrap');

import VueRouter from 'vue-router';

import Vue from 'vue'
import axios from 'axios'
import VueAxios from 'vue-axios'

Vue.use(VueAxios, axios)

Vue.use(VueRouter);

axios.defaults.baseURL = '/api';
axios.defaults.headers.common['X-CSRF-TOKEN'] = window.Laravel.csrfToken;
import LoginForm from './components/LoginForm.vue';

import RegisterForm from './components/RegisterForm.vue';

Vue.component('login-form',LoginForm)

Vue.component('register-form',RegisterForm)
// Directives

const routes = [
  { path: '/', component: require('./pages/Index.vue') },
  { path: '/admin/users', component: require('./pages/admin/Users.vue') },

  { path: '/user/:id', component: require('./pages/user/Dashboard.vue'),
    children: [
      // UserHome will be rendered inside User's <router-view>
      // when /user/:id is matched
      { path: '', component: require('./pages/user/Index.vue')},

      // UserPosts will be rendered inside User's <router-view>
      // when /user/:id/posts is matched
      { path: 'settings', component: { template: '<div>Settings</div>' } },
    ]
  },

  { path: '/manager/:id', component: require('./pages/user/Dashboard.vue'),
    children: [
      // UserHome will be rendered inside User's <router-view>
      // when /user/:id is matched
      { path: '', component: require('./pages/user/Index.vue')},

      // UserPosts will be rendered inside User's <router-view>
      // when /user/:id/posts is matched
      { path: 'settings', component: require('./pages/user/Settings.vue') },
    ]
  },
  { path: '/store/:id', component: require('./pages/user/Dashboard.vue'),
    children: [
      // UserHome will be rendered inside User's <router-view>
      // when /user/:id is matched
      { path: '', component: require('./pages/user/Index.vue')},

      // UserPosts will be rendered inside User's <router-view>
      // when /user/:id/posts is matched
      { path: 'settings', component: { template: '<div>Settings</div>' } },
    ]
  },
  { path: '/*', component: require('./pages/404.vue') },
];

const router = new VueRouter({
  routes,
});

const app = new Vue({
  el: '#app',
  router,
  template: `<div id="#app">
        <router-view></router-view>
    </div>`,

})
require('./bootstrap');
从“vue路由器”导入VueRouter;
从“Vue”导入Vue
从“axios”导入axios
从“vue axios”导入VueAxios
Vue.use(VueAxios、axios)
Vue.use(VueRouter);
axios.defaults.baseURL='/api';
axios.defaults.headers.common['X-CSRF-TOKEN']=window.Laravel.csrfToken;
从“./components/LoginForm.vue”导入LoginForm;
从“/components/RegisterForm.vue”导入RegisterForm;
Vue.component('login-form',LoginForm)
Vue.组件('register-form',RegisterPerform)
//指令
常数路由=[
{path:'/',component:require('./pages/Index.vue')},
{path:'/admin/users',组件:require('./pages/admin/users.vue'),
{path:'/user/:id',组件:require('./pages/user/Dashboard.vue'),
儿童:[
//UserHome将在用户的
//当/user/:id匹配时
{路径:'',组件:require('./pages/user/Index.vue')},
//UserPosts将在用户的
//当/user/:id/posts匹配时
{路径:'settings',组件:{模板:'settings'}},
]
},
{path:'/manager/:id',组件:require('./pages/user/Dashboard.vue'),
儿童:[
//UserHome将在用户的
//当/user/:id匹配时
{路径:'',组件:require('./pages/user/Index.vue')},
//UserPosts将在用户的
//当/user/:id/posts匹配时
{path:'settings',component:require('./pages/user/settings.vue'),
]
},
{path:'/store/:id',组件:require('./pages/user/Dashboard.vue'),
儿童:[
//UserHome将在用户的
//当/user/:id匹配时
{路径:'',组件:require('./pages/user/Index.vue')},
//UserPosts将在用户的
//当/user/:id/posts匹配时
{路径:'settings',组件:{模板:'settings'}},
]
},
{path:'/*',component:require('./pages/404.vue')},
];
常量路由器=新的VueRouter({
路线,
});
const app=新的Vue({
el:“#应用程序”,
路由器,
模板:`
`,
})
下面是一个登录表单组件

<template>
    <form class="form" @submit.prevent='submitForm'>
        <div class="form-group">
            <input type="email" class="form-control" name="email" v-model="login.email" placeholder="Email"> 
        </div>
        <div class="form-group">
            <input type="password" class="form-control" name="password" v-model="login.password" placeholder="Password"> 
        </div>
        <div class="form-group">
            <button type="submit" class="btn btn-info btn-block"> Login </button>
        </div>
    </form>
</template>

<script>
    export default {
        data() {
            return {
                errors: [],
                login: {
                    email: '',
                    password: '',
                    _token: window.Laravel.csrfToken

                }
            }
        },

        methods: {
            submitForm() {
                this.axios.post('/login',this.login)
                    .then(response => {

                    })
                    .catch(response => {
                    })
            }
        }
    }
</script>

登录
导出默认值{
数据(){
返回{
错误:[],
登录:{
电子邮件:“”,
密码:“”,
_令牌:window.Laravel.csrfToken
}
}
},
方法:{
submitForm(){
this.axios.post('/login',this.login)
。然后(响应=>{
})
.catch(响应=>{
})
}
}
}
这是我的Laravel API

在api.php中

<?php

use Illuminate\Http\Request;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

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

Route::get('/auth',function() {
   return Auth::user(); 
});
Route::resource('/users','UserController');

Route::resource('/stores','StoreController');

Route::resource('/items','ItemController');

Route::resource('/transactions','StoreController');

Route::resource('/managers','ManagerController');

Route::resource('/employees','EmployeeController');

Route::resource('/customers','CustomerController');

Route::resource('/tags','TagController');

});

Route::group(['middleware' => 'web'], function() {
    Auth::routes();
});

请显示您的代码。请更新它。请帮助您声称您遇到了错误-您遇到了什么错误?你在哪里和什么时候得到它?错误总是302的响应我修改了verifycsrfmiddleware以返回true,因为我总是得到令牌不匹配错误我对verifycsrfmiddleware这样做了一些人说你不应该禁用csrf只是为了让它工作-这是安全的一部分。我不确定您为什么使用axios而不是vue资源-您会发现如何在每个请求中提供csrf令牌的简单示例。然而,我认为你收到了一个错误的回复,不是吗?你能发布它吗?请显示你的代码。请更新它。请帮助你声称你有错误-你有什么错误?你在哪里和什么时候得到它?错误总是302的响应我修改了verifycsrfmiddleware以返回true,因为我总是得到令牌不匹配错误我对verifycsrfmiddleware这样做了一些人说你不应该禁用csrf只是为了让它工作-这是安全的一部分。我不确定您为什么使用axios而不是vue资源-您会发现如何在每个请求中提供csrf令牌的简单示例。然而,我认为你收到了一个错误的回复,不是吗?你能把它寄出去吗?