Vue.js 2与Laravel 5.6登录后如何重定向回上一页?
实现登录后重定向回原页面(Vue.js 2 + Laravel 5.6)
看了你的代码,你已经在前端做了基础的跳转参数传递,但要完成登录后回到原页面的需求,还需要前端的小优化加上Laravel后端的配合,我给你分步说明:
一、前端代码优化
你当前的logout方法已经在跳转登录页时带上了当前路径,但可以优化一下,把查询参数也带上,同时对路径做编码避免特殊字符问题:
logout() { // 拼接完整的当前路径(包含查询参数)并编码 const currentUrl = encodeURIComponent(window.location.pathname + window.location.search); window.location = `/login?red=${currentUrl}`; }
这样即使用户当前页面有?id=123这类查询参数,也能一起带到登录页,登录后回到带参数的原页面。
二、Laravel后端处理重定向
Laravel 5.6的登录逻辑默认在LoginController里,我们需要重写它的跳转逻辑,读取前端传过来的red参数,登录成功后跳转到对应的路径:
- 打开
app/Http/Controllers/Auth/LoginController.php,先引入Request类:
use Illuminate\Http\Request;
- 在控制器里添加
redirectTo方法,替换默认的跳转逻辑:
protected function redirectTo() { // 检查请求中是否存在red参数 if (request()->has('red')) { $redirectPath = urldecode(request()->get('red')); // 安全校验:确保跳转路径是本站内的相对路径,防止恶意跳转外部网站 if (str_starts_with($redirectPath, '/')) { return $redirectPath; } } // 如果没有red参数,跳转到默认首页(可以改成你自己的默认路径) return '/home'; }
这样用户登录成功后,Laravel会自动判断是否有red参数,有就跳转到对应的原页面,没有就走默认路径。
补充说明
- 你前端的
auth判断用App.authCheck是没问题的,只要这个全局变量能正确反映用户的登录状态就行。 - 后端的安全校验很重要,一定要确保跳转路径是本站内的相对路径,避免被利用跳转到钓鱼网站。
内容的提问来源于stack exchange,提问作者moses toh
相关产品推荐
相关产品推荐

