我使用 vue.js 2 和 laravel 5.6
我的 vue 组件是这样的:
<template>
<a v-if="auth" href="javascript:" class="btn btn-default btn-block" @click="add($event)">
Add
</a>
<a v-else href="javascript:" class="btn btn-default btn-block" @click="logout">
Add
</a>
</template>
<script>
export default {
data() {
return {
auth: App.authCheck
}
},
methods: {
add(event) {
...
},
logout() {
window.location = '/login?red='+window.location.pathname
}
}
}
</script>
如果用户未登录,它将调用注销方法
我尝试像上面的代码一样,但如果用户登录,它不会重定向到上一页
如何解决这个问题?
>Laravel要求您在注销时执行POST
请求。
为此,您将需要 csrf token
和 logout url
.
我会将这 2 个作为道具传递(在刀片模板中(:
<my-component
logout-url="{{route('logout')}}"
csrf-token="{{ csrf_token() }}">
</my-component>
然后,您应该将隐藏表单添加到模板并添加适当的逻辑:
<template>
<a v-if="auth" href="javascript:" class="btn btn-default btn-block" @click="add($event)">
Add
</a>
<a v-else href="javascript:" class="btn btn-default btn-block" @click="logout">
Add
</a>
<form id="vue-logout-form" v-action="{{ logoutUrl }}" method="POST" style="display: none;">
<input name="_token" type="hidden" value="{{ csrfToken }}">
</form>
</template>
<script>
export default {
props: {
logoutUrl:{type: String},
csrfToken:{type: String}
},
[...]
methods: {
logout() {
document.getElementById("vue-logout-form").submit();
}
}
}
</script>
基本上,您将通过调用 logout()
方法来发出 post 请求