【笔记整理】laravel HTTP中间件的介绍及创建
时间:2021-09-18 来源:互联网
今天PHP爱好者给大家带来下面是我看php爱好者的视频整理的笔记,供大家参考。以下是一些基础知识,如果对基础知识不熟悉的可以看看。我上一遍文章分享的是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中间件的介绍及创建的详细内容,更多请关注php爱好者其它相关文章!
-
污痕圣杯阿瓦隆的陨落新手怎么玩(污痕圣杯阿瓦隆陨落血湖纹章) 2025-05-30
-
原神5.1卡池新角色有谁 2025-05-30
-
污痕圣杯阿瓦隆的陨落属性和技能简单介绍(污痕圣杯阿瓦隆的陨落属性) 2025-05-30
-
明日之后晴空麦田回家方法 2025-05-30
-
无畏契约源能行动测试服安装包下载-怎么下载 2025-05-30
-
幣安娜App延迟率测试:高频交易实测 2025-05-30