Laravel 5.8登录后重定向至谷歌登录页且Auth::user为空如何解决
Laravel 5.8 登录后认证失效、跳转异常解决方案
问题复现
登录操作执行完成后未跳转至站点首页,反而重定向到谷歌登录页,且中间件中获取Auth::user返回空值。
排查与修复步骤
1. 校验Session配置
- 打开项目根目录
.env文件,确认SESSION_DRIVER参数不为array:array驱动仅用于单元测试,请求结束后会自动销毁Session,无法持久化登录状态,生产环境建议使用file或database驱动 - 若使用
database作为Session驱动,需先执行迁移创建Session存储表:php artisan session:table && php artisan migrate - 检查
config/session.php配置:- 站点为HTTP协议时,
secure参数必须设为false,否则浏览器不会存储认证Cookie domain参数需和当前站点的访问域名完全匹配,不允许填错或留空lifetime参数不能设为0,否则Session会在浏览器关闭后立即销毁
注意:如果修改过Session配置,必须执行php artisan config:clear清除配置缓存才能生效
- 站点为HTTP协议时,
2. 验证登录逻辑有效性
- 确认登录代码调用了Laravel官方认证方法:
Auth::attempt($credentials)或Auth::login($user),方法执行后必须返回重定向响应,不允许中途终止响应输出 - 可在登录逻辑末尾添加调试代码验证登录状态:
dd(Auth::check()),若返回false说明登录本身未成功,需排查用户凭证是否正确、用户模型是否实现了Illuminate\Contracts\Auth\Authenticatable契约
3. 检查中间件配置与执行顺序
- 打开
app/Http/Kernel.php,确认自定义认证中间件的执行顺序在\Illuminate\Session\Middleware\StartSession::class之后,Auth认证依赖Session初始化,顺序错误会导致无法读取登录状态 - 所有需要认证的路由必须放在
routes/web.php中,或手动绑定web中间件组:非web组的路由默认不会加载Session、Cookie相关中间件,无法获取认证信息 - 确认路由已添加
auth中间件,示例配置:Route::get('/home', 'HomeController@index')->middleware('auth');
注意:Laravel 5.8 版本不支持在控制器构造函数中直接读取Auth::user,构造函数执行时中间件尚未运行,必须在控制器方法或后置中间件中获取认证信息
4. 排查第三方登录逻辑冲突
- 检查全局中间件、路由中间件是否存在强制校验第三方绑定状态的逻辑:若判断规则错误,会导致本地账号登录成功后仍被重定向至谷歌登录页
- 打开
app/Providers/RouteServiceProvider.php,确认$redirectTo属性值为站点首页地址,默认配置为/home,如果被修改为谷歌登录地址会直接导致跳转异常
5. 清除所有缓存
依次执行以下命令清理项目缓存,避免旧配置干扰:
php artisan config:clear php artisan route:clear php artisan view:clear php artisan cache:clear
执行完成后清理浏览器当前站点的Cookie数据,重新发起登录请求测试。
内容的提问来源于stack exchange,提问作者Hassan
相关产品推荐
相关产品推荐

