【笔记整理】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爱好者其它相关文章!
-
区块链与加密货币投资指南:Web3.0 时代的最佳策略 时间:2025-05-11
-
Deepcoin是什么交易所?Deepcoin交易所安全吗? 时间:2025-05-11
-
Omiga交易平台:区块链与加密货币的高效Web3.0解决方案 时间:2025-05-11
-
DOGEN、Cardano和XRP本周会飙升吗? 时间:2025-05-11
-
DOGS币怎么领取?快速DOGS币领取教程 时间:2025-05-11
-
如何选择安全可靠的虚拟货币交易平台:全面指南 时间:2025-05-11
今日更新
-
带你研究一下go zap的SugaredLogger!
阅读:18
-
分析关于Mysql容器启动失败恢复的问题
阅读:18
-
html怎么实现右对齐
阅读:18
-
手把手教你使用ps给手部素材添加冰封效果(分享)
阅读:18
-
html5怎么禁止放大页面
阅读:18
-
手把手教你使用css制作表格边框设置效果(附代码)
阅读:18
-
一文详解Linux如何安装Symfony2.8
阅读:18
-
css中如何设置元素宽度
阅读:18
-
html5怎么设置input只能输入数字
阅读:18
-
两大PHP主流框架:Laravel和ThinkPHP哪个好?优缺点大比拼
阅读:18