Điều này có nghĩa là khi người dùng (Laravel view) đưa ra yêu cầu đến máy chủ (Laravel controller), yêu cầu sẽ đi qua phần mềm trung gian. Bằng cách này, phần mềm trung gian có thể kiểm tra xem yêu cầu có được xác thực hay không:
Laravel cho phép bạn defikết thúc và sử dụng phần mềm trung gian bổ sung để thực hiện nhiều tác vụ ngoại trừ xác thực.
Các phần mềm trung gian của Laravel, chẳng hạn như xác thực và bảo vệ CSRF, nằm trong thư mục ứng dụng/Http/Phần mềm trung gian .
Do đó, chúng tôi có thể nói rằng phần mềm trung gian là bộ lọc yêu cầu http, qua đó có thể xác minh các điều kiện và thực hiện các hành động.
Để tạo một phần mềm trung gian mới, chúng tôi chạy lệnh sau:
php artisan make:middleware <name-of-middleware>
chúng tôi tạo ra middleware
và chúng tôi gọi nó là CheckAge
, artisan
sẽ trả lời chúng tôi như sau:
Cửa sổ trên cho thấy phần mềm trung gian đã được tạo thành công với tên ” kiểm tra tuổi ".
Để xem phần mềm trung gian CheckAge đã được tạo hay chưa, hãy vào dự án trong thư mục app/Http/Middleware và bạn sẽ thấy tệp mới được tạo
Tệp mới tạo có mã sau
<?php
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
return $next($request);
}
}
Để sử dụng phần mềm trung gian, chúng ta cần phải đăng ký nó.
Có hai loại phần mềm trung gian trong Laravel:
Middleware globale
Route Middleware
Il phần mềm trung gian toàn cầu sẽ được thực hiện trên mọi yêu cầu HTTP từ ứng dụng, trong khi Định tuyến phần mềm trung gian sẽ được gán cho một đường dẫn cụ thể. Phần mềm trung gian có thể được đăng ký tại ứng dụng/Http/Kernel.php. Tệp này chứa hai thuộc tính phần mềm trung gian $ e $routeMiddleware . Thuộc tính $middleware được sử dụng để đăng ký quyền sở hữu và phần mềm trung gian toàn cầu $routeMiddleware được sử dụng để đăng ký phần mềm trung gian dành riêng cho tuyến đường.
Để đăng ký phần mềm trung gian toàn cầu, hãy liệt kê lớp ở cuối thuộc tính $middleware.
protected $middleware = [
\App\Http\Middleware\TrustProxies::class,
\App\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
Để đăng ký phần mềm trung gian dành riêng cho tuyến đường, hãy thêm khóa và giá trị vào thuộc tính $routeMiddleware.
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,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
Chúng tôi tạo ra kiểm tra tuổi trong ví dụ trước. Bây giờ chúng ta có thể đăng ký điều này trong thuộc tính tuyến đường phần mềm trung gian. Mã cho một đăng ký như vậy được hiển thị dưới đây.
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,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'Age' => \App\Http\Middleware\CheckAge::class,
];
Chúng ta cũng có thể truyền tham số bằng Middleware.
Ví dụ: nếu ứng dụng của bạn có các vai trò khác nhau như người dùng, quản trị viên, quản trị viên cấp cao, v.v. và bạn muốn xác thực hành động dựa trên vai trò, bạn có thể thực hiện bằng cách chuyển các tham số bằng phần mềm trung gian.
Phần mềm trung gian mà chúng tôi đã tạo chứa chức năng sau và chúng tôi có thể chuyển các đối số tùy chỉnh sau đối số $tiếp theo .
public function handle($request, Closure $next)
{
return $next($request);
}
Bây giờ, hãy thử đặt tham số vai trò cho một phần mềm trung gian mới mà chúng ta sẽ tạo từ đầu, sau đó tiến hành tạo Phần mềm trung gian vai trò bằng cách chạy lệnh sau
Sửa đổi phương thức xử lý như sau
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
chúng tôi đã thêm tham số $role
, và bên trong phương thức dòng echo
để viết đầu ra tên của vai trò.
Bây giờ hãy đăng ký phần mềm trung gian RoleMiddleware cho một đường dẫn cụ thể
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,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'Age' => \App\Http\Middleware\CheckAge::class,
'Role' => \App\Http\Middleware\RoleMiddleware::class,
];
Bây giờ để kiểm tra phần mềm trung gian với tham số, chúng ta cần tạo một yêu cầu và phản hồi. Để mô phỏng phản hồi, hãy tạo bộ điều khiển mà chúng ta sẽ gọi là TestController
php artisan make:controller TestController --plain
lệnh vừa thực hiện sẽ tạo một bộ điều khiển mới bên trong thư mục app/Http/TestController.php
, và thay đổi phương pháp index
với dòng echo "<br>Test Controller.";
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class TestController extends Controller {
public function index() {
echo "<br>Test Controller.";
}
}
Sau khi thiết lập phản hồi, chúng tôi xây dựng yêu cầu bằng cách chỉnh sửa tệp routes.php
bằng cách thêm route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
tại thời điểm này, chúng ta có thể thử ví dụ bằng cách truy cập URL http://localhost:8000/role
và trong trình duyệt, chúng ta sẽ thấy hai echo
Role editor
Test Controller
Il terminable Middleware
thực hiện một số tác vụ sau khi phản hồi được gửi đến trình duyệt. Điều này có thể đạt được bằng cách tạo một phần mềm trung gian với phương thức chấm dứt trong phần mềm trung gian. Il terminable Middleware
phải được đăng ký với middleware
toàn cầu. phương pháp terminate
sẽ nhận được hai đối số $ yêu cầu e phản hồi $.
Phương pháp Terminate
phải được tạo như trong đoạn mã sau.
php artisan make:middleware TerminateMiddleware
Khi phần mềm trung gian được tạo app/Http/Middleware/TerminateMiddleware.php
hãy sửa đổi mã như sau
<?php
namespace App\Http\Middleware;
use Closure;
class TerminateMiddleware {
public function handle($request, Closure $next) {
echo "Executing statements of handle method of TerminateMiddleware.";
return $next($request);
}
public function terminate($request, $response) {
echo "<br>Executing statements of terminate method of TerminateMiddleware.";
}
}
trong trường hợp này chúng ta có một phương pháp handle
và một phương pháp terminate
với hai thông số $request
e $response
.
Bây giờ hãy đăng ký Middleware
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,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'Age' => \App\Http\Middleware\CheckAge::class,
'Role' => \App\Http\Middleware\RoleMiddleware::class,
'terminate' => \App\Http\Middleware\TerminateMiddleware::class,
];
Bây giờ chúng ta cần tạo bộ điều khiển để mô phỏng phản hồi
php artisan make:controller XYZController --plain
sửa đổi nội dung của lớp
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Bây giờ chúng ta cần chỉnh sửa tệp routes/web.php
thêm các tuyến đường cần thiết để kích hoạt yêu cầu
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
tại thời điểm này, chúng ta có thể thử ví dụ bằng cách truy cập URL http://localhost:8000/terminate
và trong trình duyệt, chúng ta sẽ thấy những dòng sau
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Bạn cũng có thể thích:
Một ca phẫu thuật tạo hình mắt bằng cách sử dụng trình xem thương mại Apple Vision Pro đã được thực hiện tại Phòng khám đa khoa Catania…
Phát triển kỹ năng vận động tinh thông qua tô màu giúp trẻ chuẩn bị cho những kỹ năng phức tạp hơn như viết. Để tô màu…
Ngành hải quân là một cường quốc kinh tế toàn cầu thực sự, đang hướng tới thị trường 150 tỷ...
Thứ Hai tuần trước, Financial Times đã công bố một thỏa thuận với OpenAI. FT cấp phép cho hoạt động báo chí đẳng cấp thế giới…