阻止用户访问Laravel中的某些路线

时间:2019-01-10 09:04:49

标签: laravel routes

在Laravel应用程序上工作,我有一些路由,这些路由具有多步形式。在访问或填写以前的路由之前,我需要阻止用户访问最后一条路由(该链接指向表单的最后一页)。

路线

Route::get( '/first', 'TrController@payQuote')->name('b2c.payquote');
Route::get( '/second', 'TrController@emailQuote')->name('b2c.sendquote');
Route::get( '/receipt', 'TrController@getReceipt')->name('b2c.receipt');
Route::get( '/success', 'TrController@getSuccess')->name('b2c.success');

2 个答案:

答案 0 :(得分:2)

您可以创建一个中间件类,然后直接在您的routes文件中使用该中间件。

示例:

<?php

namespace App\Http\Middleware;

use Closure;

class CheckPermission
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // TODO: Add your logic here.

        if ($request->age <= 200) {
            return redirect('home');
        }

        return $next($request);
    }
}

然后在您的路线文件中:

Route::get('admin/profile', function () {
    //
})->middleware(CheckPermission::class);

答案 1 :(得分:0)

有多种方法可以做到这一点。一种方法是,您可以在最后一页上检查http-referrer,如果它是最后一页之前的路由,则允许它,否则将其重定向到上一页。可以在每个页面上实现。

其他方式可以由数据库驱动。对于每个页面访问,您都可以在数据库中输入一个条目,然后检查下一页是否有条目,否则将其重定向到您想要的任何位置。