下面是我看亿码酷站的视频整理的笔记,供大家参考。以下是一些基础知识,如果对基础知识不熟悉的可以看看。我上一遍文章分享的是composer安装laravel,想看更多文章,关注我,希望能给大家提供帮助。

中间件其实就是在路由上面加了一层过滤或是一层保护,前缀和命名空间都是作为group的数组参数传进去的,中间件也是作为group的数组参数传进去

一、中间件书写

添加中间件前

Route::group(['prefix' => 'admin','namespace'=>'Admin'], function () {
Rount::get('login','IndexController@login');
Rount::get('index','IndexController@index');
});

添加web中间件后

Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>['web']], function () {
Rount::get('login','IndexController@login');
Rount::get('index','IndexController@index');
});

web中间件可以用session功能,启用CSRF保护

Route::get('/',function(){
session(['key'=>123]);
return view('welcome');
});

再设置一个路由,用来输出session

Route::get('/test',function(){
echo session('key');
return 'test';
});

但因为不在一个中间件里,所以取不出session的值

下面我们设置一下把路由放到一个分组的中间件

Route::group(['middleware'=>['web']], function () {
Route::get('/',function(){
session(['key'=>123]);
return view('welcome');
});
Route::get('/test',function(){
echo session('key');
return 'test';
});
});

系统默认的web中间件,中间件在Kernel.php中

使用web中间件时,才会使用session

二、自己手动在Kernel.php文件中定义一个后台管理云登录的中间件

定义前:

protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    ];

定义后:

protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
 'admin.login' => \App\Http\Middleware\AdminLogin::class,
    ];

在cmd窗口切换到项目目录可以用命令创建中间件

php artisan make:middleware AdminLogin

然后在Middleware文件夹查看AdminLogin.php文件

<?php
namespace App\Http\Middleware;
use Closure
class AdminLogin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
       echo 12344445;
        return $next($request);     
               
    }
}

然后调用刚才创建的中间件

Route::group(['middleware'=>['web','admin.login'],], function () {
Route::get('/',function(){
session(['key'=>123]);
return view('welcome');
});
Route::get('/test',function(){
echo session('key');
return 'test';
});
});

三、后台超级管理员的验证

Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>'web'], function () {
Rount::get('login','IndexController@login');//登录不需要后台管理员的超级认证
});
Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>'admin.login'], function () {
Rount::get('index','IndexController@index');//超级管理员需要认证后才能进入欢迎页面和编辑页面
Rount::resource('article','ArticleController');
});

任何一个用户都可以登录,但是如果登录了成功,就进入欢迎页面,没有登录成功就在登录页面,因为登录的信息存到session里,所以我们利用session的信息判断是否登录

模拟登录是将登录信息写到session里面,然后找到Admin包下IndexController控制器

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
class IndexController extends Controller
{
public function index(){
return view('welcome');
}
    function login(){
session(['admin'=>1]); //登录信息用admin存储
     return '<h1>登录<h1>'
   }
}

我们在中间件里输出session测试一下

然后在Middleware文件夹查看AdminLogin.php文件

<?php
namespace App\Http\Middleware;
use Closure
class AdminLogin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
       echo session('admin');
        return $next($request);     
               
    }
}

验证:

我们先登录一下,然后访问欢迎页面,如果输出1,表示我们设置成功了(登录时把1存到session里,然后进入欢迎页面,欢迎页面会调用中间件的AdminLogin.php,),

我们继续设置

Middleware文件夹的AdminLogin.php文件

<?php
namespace App\Http\Middleware;
use Closure
class AdminLogin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(!session('admin')){
return redirect('admin/login'); //如果没有登录跳转到登录页面
};
        return $next($request);     
               
    }
}

以上步骤是我学习的笔记,我把要操作的步骤或重点的记了下来,如果哪有不懂可以留言。谢谢大家支持。希望能为大家提供帮助,如果想看更多信息,关注我,下一篇继续分享。

以上就是【笔记整理】laravel HTTP中间件的介绍及创建的详细内容,更多请关注亿码酷站其它相关文章!


<!–亿码酷站直播班–>【笔记整理】laravel HTTP中间件的介绍及创建
—–文章转载自PHP中文网如有侵权请联系ymkuzhan@126.com删除

下载声明:
  • 本站资源如无特殊说明默认解压密码为www.ymkuzhan.com建议使用WinRAR解压;
  • 本站资源来源于用户分享、互换、购买以及网络收集等渠道,本站不提供任何技术服务及有偿服务,资源仅提供给大家学习研究请勿作它用。
  • 赞助本站仅为维持服务器日常运行并非购买程序及源码费用因此不提供任何技术支持,如果你喜欢该程序,请购买正版!
  • 版权声明:
  • 下载本站资源学习研究的默认同意本站【版权声明】若本站提供的资源侵犯到你的权益,请提交版权证明文件至邮箱ymkuzhan#126.com(将#替换为@)站长将会在三个工作日内为您删除。
  • 免责声明:
  • 您好,本站所有资源(包括但不限于:源码、素材、工具、字体、图像、模板等)均为用户分享、互换、购买以及网络收集而来,并未取得原始权利人授权,因此禁止一切商用行为,仅可用于个人研究学习使用。请务必于下载后24小时内彻底删除,一切因下载人使用所引起的法律相关责任,包括但不限于:侵权,索赔,法律责任,刑事责任等相关责任,全部由下载人/使用人,全部承担。以上说明,一经发布视为您已全部阅读,理解、同意以上内容,如对以上内容持有异议,请勿下载,谢谢配合!支持正版,人人有责,如不慎对您的合法权益构成侵犯,请联系我们对相应内容进行删除,谢谢!