laravel怎么通过中间件验证路由登录访问
创始人
2024-11-24 20:21:43
0次

中间件是干什么的

中间件提供了一种方便的机制过滤进入应用程序的 HTTP 请求。
例如,Laravel 包含一个验证用户身份的中间件。如果用户未能通过认证,中间件会把用户重定向到登录页面。反之,用户如果通过验证,中间件将把请求进一步转发到应用程序中。
当然,除了验证身份外,还可以编写其他的中间件来执行各种任务。例如:CORS 中间件可以负责为所有的应用返回的 responses 添加合适的响应头。日志中间件可以记录所有传入应用的请求。
Laravel 自带了一些中间件,包括身份验证、CSRF 保护等。所有的这些中间件都位于app/Http/Middleware 目录中。

创建中间件

//使用 make:middleware 命令来创建新的中间件。php artisan make:middleware Auth

注册中间件

全局中间件
如果你希望中间件在应用处理每个 HTTP 请求期间运行。只需要在 app/Http/Kernel.php 中的 $middleware 属性中列出这个中间件。
为路由分配中间件
假设你想为指定的路由分配中间件 ,首先应该在 app/Http/Kernel.php 文件内为该中间件分配一个键。默认情况下,该类中的 $routeMiddleware 属性下包含了 Laravel 内置的中间件。若要加入自定义的中间件,只需把它附加到列表后并为其分配一个自定义键。例如:

// 在 App\Http\Kernel 类中...protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
    'can' => \Illuminate\Auth\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,];

中间件的书写

public function handle($request, Closure $next)
 {
 		//通过判断session是否有用户名,判断是否登陆
       if(!session('user')){
            return redirect('/');
        }
        return $next($request);
 }

路由中使用中间件

//namespace是命名空间,也就是你的controller文件在哪个文件夹里//middleware对应的就是你想调用的中间件,这里调用的是登录验证的中间件//auth就是你在App\Http\Kernel类中注册的名字Route::group(['namespace' => 'Admin', 'middleware' => ['auth']], function () {
    //后台首页
    Route::get('admin','admincontroller@index')->name('admin');
    //清除缓存路由
    Route::get('admin/clear','admincontroller@clear')->name('clear');
    //栏目资源路由
    Route::resource('admin/classify','classifycontroller');
    //公告资源路由
    Route::resource('admin/notice','classifynoticecontroller');});

通过这样的方式我们就可以在后台轻松判别用户是否登陆,没有登陆就自动跳转到登录页面!

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...