laravel中的自定义中间件以获取订单信息

问题描述

所以我有两个子域orders.domain.com和admin.domain.com

这是我的web.PHP

Route::group(['domain' => 'orders.domain.com'],function()
{

    Route::get('/','App\Http\Controllers\IsoreController@index')->name('view.klientas');
        // view authenticated coupon
        Route::get('{couponcode}/view','App\Http\Controllers\IsoreController@view')->name('view.show');
        // show coupon authenticate form
        Route::get('{couponcode}/auth','App\Http\Controllers\IsoreController@show_auth')->name('show.auth');
        // handle user input,authenticate coupon
        Route::post('{couponcode}/authenticate','App\Http\Controllers\IsoreController@post_auth')->name('post.auth');
});

Route::group(['domain' => 'admin.domain.com'],function()
{
    Auth::routes([
        'register' => false,// Register Route
        'reset' => false,// Reset Password Route
        'verify' => false,// Email Verification Route
      ]);
      Route::post('/atsijungti','App\Http\Controllers\HomeController@logout')->name('logout');
      Route::get('/','App\Http\Controllers\KuponaiController@index')->name('dashboard');
      Route::get('/kodas','App\Http\Controllers\KuponaiController@patvirtinimo_kodas')->name('patvirtinimo.kodas');
      
      //Prideti kuponus
      Route::get('/prideti/kuponus','App\Http\Controllers\KuponaiController@prideti_kupona_view')->name('prideti.view');
      Route::post('/','App\Http\Controllers\KuponaiController@prideti_kupona_post')->name('prideti.post');

});

Admin.domain.com用于创建和管理功能,例如添加订单和客户端列出的其他内容等等。

Clients.domain.com子域,用于将在其中获得URL的客户端的邮件,单击该链接并获得需要在其中编写表单的订单确认代码,然后在链接中找到优惠券ID并在数据库中找到包含邮件的订单确认代码并匹配,然后将它们重定向到所有订单详细信息的视图。

如果确认代码邮件在db中不匹配,则如何检查中间件中的所有内容并不赋予客户端访问权限的问题。因为我可以在控制器中执行某些操作以进行检查,但是如果有人直接去,我就不能限制订单视图刀片。 附言确认码为bcrypt

其他问题是如何通过ID(例如每30分钟5次错误尝试)对一个订单进行限制表单身份验证请求。

解决方法

对于限制请求,您可以使用油门中间件。

要检查数据库中是否存在电子邮件和优惠券代码,可以创建一个中间件

class AuthenticateCouponCode {

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request,Closure $next) {
        if (!CouponCode::where('coupon_code',$request-coupon_code)->where('email',$request->email)->exists()) {
            // Do redirection or thow some error to user here.
        }
        return $next($request);
    }

}

然后将该中间件添加到订购路线。