Search code examples
phplaravelauthenticationmiddleware

Laravel Auth redirect not working


I am using Laravel v5.2.39. I want to redirect to dashboard only, if you are logged in. If you change URL manually, it will redirect you to home screen. I am using auth middleware, but it doesn't work. Any help?

My routes.php file:

  Route::get('/', function () {
       return view('welcome');
  })->name('home');

     Route::get('dashboard', [
         'uses' => 'UserController@getDashboard',
         'as' => 'dashboard',
         'middleware' => 'auth'
    ]);

My UserController.php:

public function getDashboard(){
   return view('dashboard');
}

And auth middleware:

  public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->guest()) {
        if ($request->ajax() || $request->wantsJson()) {
            return response('Unauthorized.', 401);
        } else {
             return redirect()->route('home');
        }
    }

    return $next($request);
}

I don't know, whats the problem with. I have some sign in and sign up too, but i dont think this is problem. If somenone wanna see it, write me.

Have a nice day and thank you.


Solution

  • As mentioned above, have you tried something like this?

    Route::group(['middleware' => 'auth'], function () {
         Route::get('dashboard', 'UserController@getDashboard')->name('dashboard');
    });
    

    Or you can add the middleware in the construct function in your class like so :

    public function __construct() {
            $this->middleware('auth');
        }
    

    Also, see the laravel documentation on using middleware with routes.