I am trying to call a laravel route Route::get('/logout', 'Auth\\LoginController@logout');
that will logout the user and redirect to the login page, but when I try to redirect to this url it won't work, anything happens, just like it was calling a vue router route, but this route does not exists in my router.js
.
This is my route configuration to vue routes:
Route::get('/{vue_capture?}', function () {
return view('index');
})->where('vue_capture', '^(?!storage).*$');
and this is my router.js
:
//import ...
Vue.use(Router)
export default new Router({
mode: 'history',
routes: [{
path: '/',
component: Inicio
}, {
path: '/viagens/cadastrar',
component: Cadastrar
}, {
path: '/viagens/listar',
component: Listar
}]
})
There's not a /logout
route in my route.js
, so why it is not calling my laravel route??
How are you generating your links inside your vue component: with router-link
or href
?
router-link
;href
;Let me know if it worked.
尝试将您的 vue 路线放在此行之前:-
Auth::routes();
First, add Laravel auth routes to web.php file in routes folder
Auth::routes();
then in the frontend send a request to logout route
axios.post('/logout').then(response => {
location.reload();
}).catch((error) => {
console.log(error);
});
What I did in myproject.There is Auth::routes() in web.php. It will handle it by calling ougout in AthenticatesUser.php.Please have a look at this php class.
<template>
<div class="container">
<button class="btn" @click="logout">logout</button>
<form id="logout-form" action="/logout" method="POST" style="display:
none;">
<input type="hidden" name="_token" :value="token">
</form>
<router-view></router-view>
</div>
</template>
<script>
export default {
computed: {
token() {
let token = document.head.querySelector('meta[name="csrf-token"]');
return token.content
}
},
methods: {
logout() {
document.getElementById('logout-form').submit()
}
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.