PHP Laravel защищенный маршрут для подстраницы без аутентификации - PullRequest
0 голосов
/ 16 мая 2019

Я создаю Laravel -app и у меня есть маршрут, где мне нужно включить сторонний скрипт / iframe. Я хочу защитить этот маршрут простым кодом доступа без настройки аутентификации laravel.

Это возможно? Если да, то как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Все решения, которые я приведу ниже, предполагают, что вы пытаетесь получить доступ к своему маршруту с помощью параметра code=X URI / GET.

Простой маршрут

Вы можете просто проверить правильность указанного кода.в методе каждого маршрута и перенаправить куда-нибудь, если это не так.

web.php

Route::get('yourRouteUri', 'YourController@yourAction');

YourController.php

use Request;

class YourController extends Controller {
    public function yourAction(Request $request) {
        if ($request->code != '1234') {
             return route('route-to-redirect-to')->redirect();
        }

        return view('your.view');
    }
}

Маршрут с промежуточным программным обеспечением

Или вы можете использовать промежуточное программное обеспечение, чтобы избежать повторения блока условий на каждом маршруте, если многие из них связаны с проверкой.

app/Http/Middleware/CheckAccessCode.php

namespace App\Http\Middleware;

use Request;
use Closure;

class CheckAccessCode
{
    public function handle(Request $request, Closure $next)
    {
        if ($request->code != '1234') {
            return route('route-to-redirect-to')->redirect();
        }

        return $next($request);
    }
}

app/Http/Kernel.php

// Within App\Http\Kernel Class...

protected $routeMiddleware = [
    // Other middlewares...    

    'withAccessCode' => \App\Http\Middleware\CheckAccessCode::class,
];

web.php

Route::get('yourRouteUri', 'YourController@yourAction')->middleware('withAccessCode');
1 голос
/ 16 мая 2019

Вы можете создать свое собственное связующее ПО .

Зарегистрируйте промежуточное программное обеспечение в $routesMiddleware вашего app/Http/Kernel.php файла.

Тогда используйте это так:

Route::get('script/iframe', 'YourController@index')->middleware('your_middleware');

- РЕДАКТИРОВАТЬ

Вы можете получить доступ к маршруту следующим образом:

yoururl.com/script/iframe?code=200

Затем в промежуточном программном обеспечении handle Метод:

if ($request->code !== 200) {
  // you don't have access redirect to somewhere else
}

// you have access, so serve the requested page.
return $next($request); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...