How To Prevent Back Button In Laravel 10

In my Laravel development journey, I encountered a common challenge - dealing with the back button functionality. When users navigate through our web applications and use the back button, it can lead to undesired consequences such as accessing restricted pages or viewing outdated data.

To maintain control over the navigation flow and ensure users stay within the expected context of the application, I discovered a solution: preventing the back button functionality in Laravel 10.

In this article, I will guide you through the steps to implement measures that effectively disable the back button in your Laravel 10 application.

By leveraging middleware and setting appropriate response headers, we can create a seamless and secure user experience.

Let's dive in and explore the steps required to prevent the back button in Laravel 10.

Step 1: Create a Custom Middleware

To create a custom middleware, run the following Artisan command.

php artisan make:middleware PreventBackButtonMiddleware

This will generate a new middleware class in the app/Http/Middleware directory.


Step 2: Implement the Middleware Logic

Open the PreventBackButtonMiddleware class and locate the handle method. This method is where the middleware logic resides. Modify the method as follows.


namespace App\Http\Middleware;

use Closure;

class PreventBackButtonMiddleware
    public function handle($request, Closure $next)
        $response = $next($request);
        $response->headers->set('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0');
        $response->headers->set('Pragma', 'no-cache');
        $response->headers->set('Expires', 'Sat, 01 Jan 2000 00:00:00 GMT');

        return $response;

In this example, we are setting the necessary response headers to instruct the browser not to cache the page. By disabling caching, we ensure that the browser always requests the latest version of the page, preventing the use of the back button to access outdated content.



Step 3: Register the Middleware

To make use of the newly created middleware, we need to register it in the Laravel application.

Open the app/Http/Kernel.php file and locate the $middleware property. Add the following line to register the PreventBackButtonMiddleware.


namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
     * The application's route middleware.
     * These middleware may be assigned to groups or used individually.
     * @var array
    protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'prevent-back-button' => \App\Http\Middleware\PreventBackButtonMiddleware::class,


Step 4: Apply the Middleware

You can apply the middleware at different levels depending on your specific requirements. you can apply it to specific routes or groups of routes by adding the middleware to the route definitions in the routes/web.php or routes/api.php files.

Route::group(['middleware' => 'prevent-back-button'],function(){
	Route::get('/home', 'HomeController@index');


Step 5: Testing the Prevention of Back Button

With the middleware in place, test your Laravel application by navigating through the pages and using the back button. You should observe that the back button no longer loads the previous page and instead refreshes the current page.


You might also like: 


Techsolutionstuff | The Complete Guide

I'm a software engineer and the founder of Hailing from India, I craft articles, tutorials, tricks, and tips to aid developers. Explore Laravel, PHP, MySQL, jQuery, Bootstrap, Node.js, Vue.js, and AngularJS in our tech stack.