По определению
Промежуточное программное обеспечение предоставляет удобный механизм фильтрации HTTP-запросов, поступающих в ваше приложение. Например, Laravel включает промежуточное программное обеспечение, которое проверяет подлинность пользователя вашего приложения. Если пользователь не аутентифицирован, промежуточное программное обеспечение перенаправит пользователя на экран входа в систему. Однако, если пользователь прошел проверку подлинности, промежуточное программное обеспечение разрешит дальнейшее выполнение запроса в приложении.
Чтобы пользователь не мог добавить более 10 сообщений, необходимо создать промежуточное программное обеспечение для защиты * 1007. * route
Чтобы создать новое промежуточное программное обеспечение, используйте команду make: middleware Artisan:
php artisan make:middleware CheckUserPostsNumber
Эта команда поместит новый класс CheckUserPostsNumber в каталог app/Http/Middleware
. В этом промежуточном программном обеспечении мы будем разрешать доступ к маршруту posts/create
только в том случае, если пользователь публикует номер менее 10. В противном случае вы будете перенаправлять пользователя обратно на домашний URI:
<?php
namespace App\Http\Middleware;
use Illuminate\Support\Facades\Auth;
use Closure;
class CheckUserPostsNumber
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (Auth::user()->posts->count() >= 10) {
return redirect('home');
}
return $next($request);
}
}
Назначение Промежуточное программное обеспечение для маршрутов
Если вы хотите назначить промежуточное программное обеспечение для указанных c маршрутов, вы должны сначала назначить промежуточному программному обеспечению ключ в файле приложения / Http / Kernel. php. По умолчанию свойство $ routeMiddleware этого класса содержит записи для промежуточного программного обеспечения, включенного в Laravel. Чтобы добавить свой собственный, добавьте его в этот список и назначьте ему ключ по вашему выбору:
// Within App\Http\Kernel Class...
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
//...
'checkUserPostsNumber' => 'App\Http\Middleware\checkUserPostsNumber'
];
Как только промежуточное программное обеспечение определено в ядре HTTP, вы можете использовать метод промежуточного программного обеспечения для назначения промежуточного программного обеспечения для Маршрут:
Route::get('posts/create', function () {
//
})->middleware('auth', 'checkUserPostsNumber');
Документы