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

Laravel 10中如何在web.php将未授权用户重定向至登录页?

Laravel 10 实现未授权用户重定向至登录页方案

针对你的自定义后台路由,需要结合登录验证中间件和角色权限中间件来实现需求,具体步骤如下:

1. 更新路由配置

在后台路由组中同时添加auth(验证用户是否登录)和role:admin(验证用户角色)中间件,确保未登录用户先被拦截:

Route::middleware(['auth', 'role:admin'])->prefix('admin')->group(function()
{
    Route::get('/', [App\Http\Controllers\Admin\HomeController::class, 'index'])->name('admin');
    Route::resource('games', App\Http\Controllers\Admin\PostController::class);
});

2. 完善/创建角色验证中间件

如果还未创建role中间件,先通过Artisan命令生成:

php artisan make:middleware RoleMiddleware

打开生成的app/Http/Middleware/RoleMiddleware.php,编写权限验证逻辑,当用户无admin角色时重定向至登录页:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class RoleMiddleware
{
    public function handle(Request $request, Closure $next, string $role)
    {
        // 这里假设你的用户模型通过`role`字段存储角色,可根据实际关联/字段调整
        if (!auth()->user() || auth()->user()->role !== $role) {
            return redirect()->route('login');
        }

        return $next($request);
    }
}

3. 注册中间件

在app/Http/Kernel.php的routeMiddleware数组中注册刚创建的中间件:

protected $routeMiddleware = [
    // 保留原有中间项...
    'role' => \App\Http\Middleware\RoleMiddleware::class,
];

这样配置后,无论是未登录用户,还是已登录但无admin角色的用户,访问后台路由时都会被自动重定向到登录页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:23:12