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

Laravel中根据认证用户邮箱实现登录后页面跳转问题

Laravel 根据用户邮箱实现登录后动态跳转

步骤1:添加着陆页路由

先在web.php中补充已认证用户可访问的着陆页路由:

// 着陆页路由
Route::get('/landing', function () {
    return view('landing'); // 替换为你的着陆页视图路径
})->name('landing')->middleware('auth');

步骤2:修改登录跳转逻辑

根据你的认证实现方式,选择以下方案:

方案A:用Laravel自带认证控制器(如Breeze/Jetstream)

找到app/Http/Controllers/Auth/LoginController.php,重写redirectTo方法:

use Illuminate\Http\Request;

class LoginController extends Controller
{
    use AuthenticatesUsers;

    protected function redirectTo(Request $request)
    {
        // 根据邮箱判断跳转目标
        return $request->user()->email === 'abc@abc.com' 
            ? route('app-ecommerce-dashboard') 
            : route('landing');
    }
}

方案B:自定义登录路由逻辑

如果是手动编写登录POST路由,在凭证验证通过后直接判断跳转:

use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;

Route::post('/login', function (Request $request) {
    // 验证登录凭证
    $credentials = $request->validate([
        'email' => ['required', 'email'],
        'password' => ['required'],
    ]);

    if (Auth::attempt($credentials)) {
        $request->session()->regenerate();
        
        // 邮箱判断跳转
        if (Auth::user()->email === 'abc@abc.com') {
            return redirect()->route('app-ecommerce-dashboard');
        }
        
        return redirect()->route('landing');
    }

    return back()->withErrors([
        'email' => '邮箱或密码不匹配',
    ]);
})->middleware('guest');

注意事项

  • 确保landing视图文件存在于resources/views目录下,或根据项目结构调整视图路径
  • 路由名称app-ecommerce-dashboard和landing要与实际路由命名一致
  • 如果用Sneat Dashboard的自定义认证组件,只需在登录成功的逻辑块中加入邮箱判断即可

内容的提问来源于stack exchange,提问作者Rahul W

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:52:06