如何使用Laravel Api路由和Vue 2 Js和Vue路由器对用户进行身份验证
我的目标是,laravel为我们提供一个已实现的授权提供程序 因此,我想通过API对我的用户进行身份验证,并将其设置回我的Vue路由器 并授权用户 我如何实现它 我总是在身份验证时出错 我使用axios作为我的HTTP提供程序 这是app.js如何使用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
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令牌的简单示例。然而,我认为你收到了一个错误的回复,不是吗?你能把它寄出去吗?