Laravel 5.4 umleiten zu einer spezifischen Seite, wenn der Benutzer nicht authentifiziert ist, mithilfe von middleware

Möchte ich umleiten Benutzer, wenn nicht authentifiziert ist, meine index-Seite (der login-Seite)

Können nicht scheinen, damit es funktioniert und ich habe wirklich verwirrt mit dem routing.

HomeController

class HomeController extends Controller
{

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return redirect()->guest('/');
    }
}

Routing

//Index
Route::get('/', [
    'as' => 'index',
    'uses' => 'UserController@index'
]);

UserController

Dem routing, wie Sie sehen, leitet auf eine User-Controller bei index - Funktion, die die unten :

*hat __construct (), so verwendet er die middleware 'auth'.

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

public function index(){

    //If user is logged
    if(Auth::check()) {

        //If user has NOT submitted information form redirect there, otherwise to categories
        if(!Auth::user()->submitted_information)
            return redirect()->route('information');
        else
            return redirect()->route('categories');
    }
    else
        return view('index', ['body_class' => 'template-home']);

}

Handler.php

Und die nicht authentifizierten Funktion innen middleware-auth (Exceptions/Handler.php)

 protected function unauthenticated($request, AuthenticationException $exception)
    {
        if ($request->expectsJson()) {
            return response()->json(['error' => 'Unauthenticated.'], 401);
        }

        return redirect()->route('index');
    }

Den Fehler bekomme ich jetzt die folgenden :

InvalidArgumentException in UrlGenerator.php line 304:
Route [index] not defined.

Dieser Fehler passiert, weil die Linie der

return redirect()->route('index'); im obigen nicht authentifizierten Funktion.

Was vermisse ich hier? Wenn Sie weitere Informationen benötigen, fühlen Sie sich bitte frei zu Fragen.

BEARBEITEN : Bis jetzt, wenn ich das entfernen von UserController die __construct() - Methode, und fügen Sie in web.php alle Routen, was middleware zu verwenden, es funktioniert.

Beispielsweise

Route::get('/categories', [
    'as' => 'categories',
    'uses' => 'UserController@showCategories'
])->middleware('auth');

Aber ich bin versucht zu finden, ohne dass es was middleware zu verwenden, um es automatisch.

Schreibe einen Kommentar