Я не знаю, почему это промежуточное ПО вызывается, даже если оно не должно быть.
Это промежуточное ПО:
<?php
namespace App\Http\Middleware;
use ...;
class FacebookLogin
{
public function handle($request, Closure $next)
{
Session::flash('error', "My message error");
return $next($request);
}
}
Это мой файл Kernel.php:
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'fb.login' => \App\Http\Middleware\FacebookLogin::class,
'cors' => \App\Http\Middleware\Cors::class,
'auth.api' => \App\Http\Middleware\AuthApi::class,
'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
];
}
Это мой файл RouteServiceProvider.php:
namespace App\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
class RouteServiceProvider extends ServiceProvider
{
protected $namespace = 'App\Http\Controllers';
public function boot()
{
parent::boot();
}
public function map()
{
$this->mapApiRoutes();
$this->mapWebRoutes();
$this->mapFacebookRoutes();
}
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
Route::prefix('ajax')
->middleware('web')
->namespace($this->namespace)
->group(base_path('routes/ajax.php'));
Route::middleware(['web', 'auth'])
->namespace($this->namespace)
->group(base_path('routes/auth.php'));
}
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}
protected function mapFacebookRoutes()
{
Route::group([
'middleware' => ['web', 'fb.login'],
'namespace' => $this->namespace,
'prefix' => 'fb',
], function () {
require base_path('routes/facebook.php');
});
Route::group([
'middleware' => ['web', 'fb.login'],
'namespace' => $this->namespace,
'prefix' => 'fb/ajax',
], function () {
require base_path('routes/facebook_ajax.php');
});
}
}
Я получаю Flash-сообщение, отображаемое при переходе к базовому URL моего сайта (например:www.example.com).
Но, как вы можете видеть в функции mapWebRoutes
, я применяю только веб-промежуточное программное обеспечение к веб-маршрутам, поэтому я не понимаю, почему вызывается FacebookLogin
промежуточное программное обеспечение.
Я применяю FacebookLogin
промежуточное ПО только для маршрутов префиксов "fb" и "fb / ajax".
Я заметил еще одно странное поведение: я получаю сообщение, только если я захожу на https-версию моего веб-сайта, а не если я захожу на http-версию.