Я использовал Просмотр журнала в laravel, который имеет publi c маршрут , что любой пользователь может получить к нему доступ (http://localhost: 8000 / log -viewer ). Я хочу ограничить его доступ только для admin . Я попытался 'middleware' => ['web','api']
в log-viewer. php, но затем он ищет в api. php и, поскольку маршрут не определен, он перенаправляет запрос не найден. Затем я создал промежуточное ПО с именем logger.
Конфигурация / просмотр журнала. php
'route' => [
'enabled' => true,
'attributes' => [
'prefix' => 'log-viewer',
'middleware' => ['logger'],
],
],
app \ Http \ Kernel. php
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'logger' => \App\Http\Middleware\Logger::class,
app \ Http \ Middleware \ Logger. php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Http\Request;
use App\User;
use Log;
class Logger
{
protected $auth;
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
public function handle($request, Closure $next)
{
$user=Auth::guard('api')->user();
Log::info($user);
if ($user) {
return response('testing admin');
}
else{
return response()->json('Unauthorized.', 500);
}
}
}
Когда я Log :: info ($ user), он не возвращает результата, так как нет заголовка, содержащего авторизацию информация пользователя.
Если я создаю маршрут в сети. php, то также отображается запрос не найден.
web. php
Route::post('/log-viewer', function(\Illuminate\Support\Facades\Request $req){
return true;
})->middleware('logger');
app \ Providers \ BroadcastServiceProvider. php
public function boot()
{
// Broadcast::routes();
Broadcast::routes(['middleware' => 'auth:api']);
require base_path('routes/channels.php');
}