You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel登录提交后未跳转至xwelcome仪表盘页面问题求助

Laravel自定义登录后未正常跳转问题排查

问题现象

实现登录后重定向到xwelcome.blade.php主仪表盘的功能时,填写测试账号点击登录按钮后未完成预期跳转,浏览器地址栏显示地址为:

https://example.com/login?_token=0GddRaD453thhRFL7KWgEQ5DnZ3q7B4rL5gaajuM

现有代码

路由配置

Route::get('xwelcome', [CustomAuthController::class, 'xwelcome']); 

Route::get('login', [CustomAuthController::class, 'index'])->name('login');

Route::post('custom-login', [CustomAuthController::class, 'customLogin'])->name('login.custom'); 

Route::get('registration', [CustomAuthController::class, 'registration'])->name('register-user');

Route::post('custom-registration', [CustomAuthController::class, 'customRegistration'])->name('register.custom'); 

Route::get('logout', [CustomAuthController::class, 'logOut'])->name('logout');

CustomAuthController控制器代码

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Hash;
use Session;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
class CustomAuthController extends Controller

{
    public function index()
    {
        return view('auth.login');
    }  
      
    public function customLogin(Request $request)
    {
        $request->validate([
            'email' => 'required',
            'password' => 'required',
        ]);
   
        $credentials = $request->only('email', 'password');
        if (Auth::attempt($credentials)) {
            return redirect()->intended('xwelcome')
                        ->withSuccess('Signed in');
        }
  
        return redirect("login")->withSuccess('Login details are not valid');
    }

    public function registration()
    {
        return view('auth.registration');
    }
      
    public function customRegistration(Request $request)
    {  
        $request->validate([
            'name' => 'required',
            'email' => 'required|email|unique:users',
            'password' => 'required|min:6',
        ]);
           
        $data = $request->all();
        $check = $this->create($data);
         
        return redirect("xwelcome")->withSuccess('You have signed-in');
    }

    public function create(array $data)
    {
      return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password'])
      ]);
    }    
    
    public function dashboard()
    {
        if(Auth::check()){
            return view('xwelcome');
        }
  
        return redirect("login")->withSuccess('You are not allowed to access');
    }
    
    public function logOut() {
        Session::flush();
        Auth::logout();
  
        return Redirect('login');
    }
}

登录表单代码

<form role="form" method="post" action="{{ route('login.custom') }}">
    @csrf
    <div class="mt-4">
    <div class="form-group">
        <label class="form-control-label">Email address</label>
        <div class="input-group input-group-merge">
            <div class="input-group-prepend">
                <span class="input-group-text"><i class="fas fa-user"></i></span>
            </div>
            <input type="email" class="form-control" id="input-email" placeholder="name@example.com">
        </div>
    </div>
    <div class="form-group mb-4">
        <div class="d-flex align-items-center justify-content-between">
            <div>
                <label class="form-control-label">Password</label>
            </div>
            <div class="mb-2">
                <a href="#!" class="small text-muted text-underline--dashed border-primary">Lost password?</a>
            </div>
        </div>
        <div class="input-group input-group-merge">
            <div class="input-group-prepend">
                <span class="input-group-text"><i class="fas fa-key"></i></span>
            </div>
            <input type="password" class="form-control" id="input-password" placeholder="Password">
            <div class="input-group-append">
                <span class="input-group-text">
                    <a href="#" data-toggle="password-text" data-target="#input-password">
                        <i class="fas fa-eye"></i></a>
                </span>
            </div>
        </div>
    </div>
        <button type="submit" class="btn btn-sm btn-primary btn-icon rounded-pill">
            <span class="btn-inner--icon"><i class="fas fa-long-arrow-alt-right"></i></span>
            Sign In
        </button>
    </div>
</form>

问题原因

逐行排查后发现3处问题,直接导致登录跳转失败:

  1. 登录表单输入框缺少name属性:邮箱、密码输入框只配置了id,没有加name="email"和name="password",后端无法从请求中获取到这两个必填参数,触发验证失败自动重定向回登录页,这是当前跳转失败的核心原因。
  2. xwelcome路由绑定的控制器方法不存在:路由中定义xwelcome路径绑定的是CustomAuthController::xwelcome方法,但控制器里只有dashboard方法,没有对应的xwelcome方法,就算登录验证通过,跳转时也会报方法不存在的错误。
  3. 注册逻辑缺少登录状态写入:用户注册成功创建账号后,没有调用Auth::login()写入登录会话,直接跳转xwelcome页面会被未登录拦截逻辑打回登录页。

修复方案

按顺序修改对应代码即可:

  1. 补全登录表单输入框的name属性:
    • 邮箱输入框添加name="email",修改后代码:
      <input type="email" name="email" class="form-control" id="input-email" placeholder="name@example.com">
      
    • 密码输入框添加name="password",修改后代码:
      <input type="password" name="password" class="form-control" id="input-password" placeholder="Password">
      
  2. 修正xwelcome路由的控制器方法绑定,直接把路由里的方法名改成已有的dashboard即可,修改后路由:
    Route::get('xwelcome', [CustomAuthController::class, 'dashboard']);
    
  3. 补全注册成功后的登录逻辑,在创建用户后调用Auth::login()写入会话,修改customRegistration方法:
    public function customRegistration(Request $request)
    {  
        $request->validate([
            'name' => 'required',
            'email' => 'required|email|unique:users',
            'password' => 'required|min:6',
        ]);
            
        $data = $request->all();
        $user = $this->create($data);
        Auth::login($user); // 写入登录会话
          
        return redirect("xwelcome")->withSuccess('You have signed-in');
    }
    

修改完成后执行php artisan route:clear清除路由缓存,再测试登录即可正常跳转。

内容的提问来源于stack exchange,提问作者Michael T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 18:22:47