Laravel部署后登录页面刷新无跳转,本地正常问题求助
Laravel部署后登录失效问题排查
我的Laravel项目本地运行完全正常,但部署到托管环境后出现异常:访问mysite.com进入登录页面,提交表单后页面仅刷新,无法完成登录;但mysite.com/register可以正常注册新用户,数据能正常写入Users表。
我创建了两个测试路由来排查问题:
Route::get('/test', function(){ return User::All(); // 返回了数据库中所有用户,说明数据库连接正常 }); Route::get('/test', function(){ $user = Auth::user(); print_r($user); // 返回NULL });
测试结果显示数据库连接正常,但Auth::user()始终返回NULL。我清楚Auth::login会将已认证用户写入session,同时在用户表中填充remember_token字段——数据库里该字段已经有值,但session中没有相关数据。
更新:
我逐步用本地正常运行的旧版本替换项目文件,最终定位到问题出在resource/views/auth/login.blade.php文件:我把默认的email输入字段改成了username。推测系统可能在某处验证时仍期望接收email字段,但为什么本地版本能正常运行?
相关代码
LoginController代码
<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\Models\User; use App\Providers\RouteServiceProvider; use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Support\Facades\Auth; class LoginController extends Controller { /* |-------------------------------------------------------------------------- | Login Controller |-------------------------------------------------------------------------- | | This controller handles authenticating users for the application and | redirecting them to your home screen. The controller uses a trait | to conveniently provide its functionality to your applications. | */ protected $redirectTo = '/user'; use AuthenticatesUsers; /** * Where to redirect users after login. * * @var string */ // protected $redirectTo = RouteServiceProvider::HOME; /** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware('guest')->except('logout'); } protected function redirectTo() { if (Auth::user()->role === User::IS_ADMIN && Auth::user()->user_verify === 1) { return '/admin'; }elseif(Auth::user()->role === User::IS_USER && Auth::user()->user_verify === 1 || Auth::user()->role === User::IS_USER && Auth::user()->user_verify === 0){ return '/user'; } } }
路由代码
Route::get('/', function () { if(Auth::check()){ $user = Auth::user(); if($user->role == 1 && $user->user_verify == 1){ return redirect('/admin'); } elseif($user->role == 0 && $user->user_verify == 1 || $user->role == 0 && $user->user_verify == NULL || $user->role == 0 && $user->user_verify == 2){ return redirect('/user'); } }else{ return view('auth.login'); } });
内容的提问来源于stack exchange,提问作者Владимир Солёный
相关产品推荐
相关产品推荐

