需要帮助限制对某些 ID 的路由访问

时间:2021-02-03 15:50:30

标签: laravel laravel-5 model-view-controller eloquent routes

我需要客人只能访问链接“fixtures/1”和“fixtures/2”

当他们设法使用其他 ID 时,例如“fixtures/3”,他们应该得到类似“找不到页面”的信息

我是这样试的:

mainChunk

但它不起作用。 有人可以帮助我,我如何添加这样的条款?

这是我没有任何变化的路线:

Route::get('/fixtures/{team}', function ($team) {
    //
})->where($team, '1')->name('front.fixtures');

已编辑:

我尝试使用 if 来限制,但每次打开页面时它不检查 id,这是我的方法:

Route::get('/fixture/{team}', 'FrontController@fixtures')->name('front.fixtures');

2 个答案:

答案 0 :(得分:0)

使用这个中间件代码。

public function handle(Request $request, Closure $next)
    {
        $auth = \Auth::check();
        if($auth == false){
            if ($request->route('team') == '3' || $request->route('team') == '5') {
                return $next($request);
            } else {
                abort('404');
            }

        } else{
            return $next($request);
        }
    }

您的路线应该是:

Route::get('/fixture/{team}', 'FrontController@fixtures')->middleware('name of 
                                                                    middleware');

不要忘记在受保护的 $routeMiddleware 下的 Karnel.php 中注册中间件。

Read More about Middleware

希望这会有用。

答案 1 :(得分:-1)

我平时做什么

app/Providers/RouteServiceProvider.php

public function boot()
    {
        parent::boot();

        Route::bind('institutionDocument', function ($id) {
            $this->CheckForSignedUser();
            $document = \App\Models\Document::find($di);

            return $document ?? abort(404);
        });
}

在我的路线上

Route::get(
    "documents/{institutionDocument}/preview",
    "DocumentsController@preview"
);