登录vue和laravel后,如何重定向回上一页?
我使用vue.js2和laravel 5.6 我的vue组件如下所示:登录vue和laravel后,如何重定向回上一页?,laravel,vue.js,vuejs2,vue-component,laravel-5.6,Laravel,Vue.js,Vuejs2,Vue Component,Laravel 5.6,我使用vue.js2和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"
<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>
导出默认值{
数据(){
返回{
auth:App.authCheck
}
},
方法:{
添加(事件){
...
},
注销(){
window.location='/login?red='+window.location.pathname
}
}
}
如果用户未登录,它将调用注销方法
我尝试使用上面的代码,但如果用户登录,它不会重定向到上一页
如何解决此问题?Laravel要求您在注销时执行
POST
请求
为此,您需要csrf令牌
和注销url
我会将这2个作为(在刀片模板中)传递:
然后,您应该向模板中添加隐藏表单,并添加适当的逻辑:
<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>
导出默认值{
道具:{
logoutUrl:{type:String},
csrfToken:{type:String}
},
[...]
方法:{
注销(){
document.getElementById(“vue注销表单”).submit();
}
}
}
基本上,您将通过调用
logout()
方法发出post请求如果您希望登录重定向到当前页面,您的/login
组件必须使用红色=
查询参数。是吗?@acdcjunior我还是很困惑。但似乎是这样的,/login
是您的组件还是来自laravel的组件?如果它是一个组件,则显示它。您最好使用vue路由器。@Dencio尝试用详细答案回答
<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>