我正在构建一个Laravel-app,我有一个需要包含第三方脚本/iframe的路径。我希望在不设置laravel-authentication的情况下,使用简单的访问代码来保护该路由。
这有可能吗?如果是这样的话,我怎样才能做到呢?
发布于 2019-05-16 10:21:20
下面我给出的所有解决方案都表明您正在尝试使用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');发布于 2019-05-16 08:00:14
您可以创建自己的中间件。
在您的$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); https://stackoverflow.com/questions/56163594
复制相似问题