[Note organization] Introduction and creation of laravel HTTP middleware
The following are the notes I compiled while watching videos on the php Chinese website for your reference. The following are some basic knowledge. If you are not familiar with the basic knowledge, you can take a look. The last article I shared was about composer installing laravel. If you want to see more articles, follow me. I hope I can help you.
Middleware is actually a layer of filtering or protection added to the route. The prefix and namespace are passed in as the array parameters of the group, and the middleware is also passed in as the array parameters of the group
1. Middleware writing
Before adding middleware
Route::group(['prefix' => 'admin','namespace'=>'Admin'], function () {
Rount::get('login','IndexController@login');
Rount::get('index','IndexController@index');
});After adding web middleware
Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>['web']], function () {
Rount::get('login','IndexController@login');
Rount::get('index','IndexController@index');
});web middleware can be used session function, enable CSRF protection
Route::get('/',function(){
session(['key'=>123]);
return view('welcome');
});and set up a route to output the session
Route::get('/test',function(){
echo session('key');
return 'test';
});But because it is not in a middleware, the value of the session cannot be retrieved
Next we set up the middleware that puts the route into a group
Route::group(['middleware'=>['web']], function () {
Route::get('/',function(){
session(['key'=>123]);
return view('welcome');
});
Route::get('/test',function(){
echo session('key');
return 'test';
});
});The system default web middleware, the middleware is in Kernel.php
Session will be used only when using web middleware
2. Manually define a background management cloud login middleware in the Kernel.php file
Before definition:
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,
];After definition:
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,
];Switch to the project directory in the cmd window and use the command to create middleware
php artisan make:middleware AdminLogin
Then check the AdminLogin.php file in the Middleware folder
<?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);
}
}Then call the middleware just created File
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';
});
});3. Verification of the background super administrator
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');
});Any user can log in, but if the login is successful, the welcome page will be entered, and the login is not successful. Just on the login page, because the login information is stored in the session, we use the session information to determine whether to log in
Simulating login is to write the login information into the session, and then find the IndexController controller under the Admin package
<?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>'
}
}We output the session in the middleware to test it
Then check the AdminLogin.php file in the Middleware folder
<?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);
}
}Verification:
We log in first, and then visit the welcome page. If 1 is output, it means that our setting is successful (save 1 in the session when logging in, and then enter the welcome page. The welcome page will call the middleware's AdminLogin.php,),
We continue to set up the AdminLogin.php file in the Middleware folder
##
<?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);
}
}The above is the detailed content of [Note organization] Introduction and creation of laravel HTTP middleware. For more information, please follow other related articles on the PHP Chinese website!
Hot AI Tools
Undresser.AI Undress
AI-powered app for creating realistic nude photos
AI Clothes Remover
Online AI tool for removing clothes from photos.
Undress AI Tool
Undress images for free
Clothoff.io
AI clothes remover
AI Hentai Generator
Generate AI Hentai for free.
Hot Article
Hot Tools
Notepad++7.3.1
Easy-to-use and free code editor
SublimeText3 Chinese version
Chinese version, very easy to use
Zend Studio 13.0.1
Powerful PHP integrated development environment
Dreamweaver CS6
Visual web development tools
SublimeText3 Mac version
God-level code editing software (SublimeText3)
Hot Topics
1384
52
Laravel - Artisan Commands
Aug 27, 2024 am 10:51 AM
Laravel - Artisan Commands - Laravel 5.7 comes with new way of treating and testing new commands. It includes a new feature of testing artisan commands and the demonstration is mentioned below ?
Laravel - Pagination Customizations
Aug 27, 2024 am 10:51 AM
Laravel - Pagination Customizations - Laravel includes a feature of pagination which helps a user or a developer to include a pagination feature. Laravel paginator is integrated with the query builder and Eloquent ORM. The paginate method automatical
How to get the return code when email sending fails in Laravel?
Apr 01, 2025 pm 02:45 PM
Method for obtaining the return code when Laravel email sending fails. When using Laravel to develop applications, you often encounter situations where you need to send verification codes. And in reality...
Laravel schedule task is not executed: What should I do if the task is not running after schedule: run command?
Mar 31, 2025 pm 11:24 PM
Laravel schedule task run unresponsive troubleshooting When using Laravel's schedule task scheduling, many developers will encounter this problem: schedule:run...
In Laravel, how to deal with the situation where verification codes are failed to be sent by email?
Mar 31, 2025 pm 11:48 PM
The method of handling Laravel's email failure to send verification code is to use Laravel...
How to implement the custom table function of clicking to add data in dcat admin?
Apr 01, 2025 am 07:09 AM
How to implement the table function of custom click to add data in dcatadmin (laravel-admin) When using dcat...
Laravel - Dump Server
Aug 27, 2024 am 10:51 AM
Laravel - Dump Server - Laravel dump server comes with the version of Laravel 5.7. The previous versions do not include any dump server. Dump server will be a development dependency in laravel/laravel composer file.
Laravel Redis connection sharing: Why does the select method affect other connections?
Apr 01, 2025 am 07:45 AM
The impact of sharing of Redis connections in Laravel framework and select methods When using Laravel framework and Redis, developers may encounter a problem: through configuration...


