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

Custom middleware in laravel for order info

所以我有两个 sub-domains 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 在 link 并在数据库中找到带有邮件的订单确认代码并匹配,然后它们将被重定向到包含所有订单详细信息的视图。

如果确认代码和邮件在数据库中不匹配,如何检查中间件中的所有内容以及不授予客户端访问权限的问题。因为我可以在控制器中做一些检查,但如果有人直接去,我不能限制订单视图 blade。 P.S。确认码是 bcrypt

其他问题如何通过 ID 限制对一个订单的授权请求,例如每 30 分钟 5 次错误尝试。

对于限制请求,可以使用throttle中间件。

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

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);
    }

}

然后将这个中间件添加到订单路由中。