عدم دسترسی کاربران به صفحه مدیریت پس از logout در لاراول

بحث احراز هویت یکی از مباحث مهم در امنیت وب سایت هاست. روش های زیادی برای احراز هویت در سایت ها وجود دارد. پر استفاده ترین این روش ها احراز هویت از طریق Session می باشد. هنگاهی که کاربر به سیستم login می کند یک session برای او می سازیم و هنگامی که logout می کند، session مربوطه را حذف می کنیم. اما کاربر می تواند با زدن دکمه back مرورگر مجددا به صفحه مدیریت برگردد. درست است که دسترسی ندارد و با رفرش کردن صفحه دوباره به صفحه login هدایت می شود. اما اگر بخواهیم بعد از زدن دکمه back،صفحه مدیریت باز نشود باید اقدامات زیر را انجام دهیم.

ابتدا باید با مفهوم middleware در لاراول آشنا باشیم. هرگاه یک درخواست در لاراول اجرا می شود، یکی از مواردی که قبل از آن اجرا می شود middleware است. توسط middleware می توانید درخواست های http خود را فیلتر کنید. اغلب برای احراز هویت از middleware استفاده می شود. 

ساخت یک middleware برای عدم دسترسی کاربران به صفحه مدیریت پس از logout

توسط دستور زیر یک middleware با نام ValidateBackHistory ایجاد میکنیم.


    php artisan make:middleware ValidateBackHistory


در پوشه app->http->middleware لیست آنها را مشاهده می کنید.

middleware

سپس کد زیر را در middleware ایجاد شده مینوسیم


        public function handle($request, Closure $next)
    {
        $response = $next($request);

        return $response->header('Cache-Control','nocache, no-store, max-age=0, must-revalidate')
            ->header('Pragma','no-cache') //HTTP 1.0
            ->header('Expires','Sat, 01 Jan 1990 00:00:00 GMT');

    }

سپس میتواند این middleware را روی controller یا یک Route Group اعمال کنید. از این پس وقتی کاربران logout می شوند دیگر با دکمه back نمی توانند به صفحه مدیریت برگردنند.

ثبت نظر جدید