Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
登录vue和laravel后,如何重定向回上一页?_Laravel_Vue.js_Vuejs2_Vue Component_Laravel 5.6 - Fatal编程技术网

登录vue和laravel后,如何重定向回上一页?

登录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"

我使用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" @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>