Ich möchte Benutzer umleiten, wenn nicht authentifiziert, um meine Index-Seite (die der Login-Seite ist)Laravel 5.4 Umleitung auf bestimmte Seite, wenn der Benutzer nicht authentifiziert ist Middleware
Kann nicht scheinen, damit es funktioniert und Ich war 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' => '[email protected]'
]);
Usercontroller
Das Routing als Redirects einen Benutzer-Controller bei Index Funktion sehen, 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 unauthenticated Funktion innerhalb Middleware von Auth (Ausnahmen/handler.php)
protected function unauthenticated($request, AuthenticationException $exception)
{
if ($request->expectsJson()) {
return response()->json(['error' => 'Unauthenticated.'], 401);
}
return redirect()->route('index');
}
Der Fehler, den ich jetzt bekommen, ist die unten:
InvalidArgumentException in UrlGenerator.php line 304:
Route [index] not defined.
Dieser Fehler tritt auf, weil die Linie der
return redirect()->route('index');
in der oben unauthenticated Funktion.
Was fehlt mir hier? Wenn Sie weitere Informationen benötigen, zögern Sie nicht zu fragen.
EDIT: Bis jetzt, wenn ich von Usercontroller entfernen die __construct()
Methode, und fügen Sie in web.php
zu allen Routen, was middleware
zu verwenden, es funktioniert.
Zum Beispiel
Route::get('/categories', [
'as' => 'categories',
'uses' => '[email protected]'
])->middleware('auth');
Aber ich versuche zu finden, ohne dass die Angabe, welche Middleware zu verwenden, wird es automatisch zu verwenden.
Nein, das hat nicht geholfen..Es hilft, das richtige Routing zu zeigen, aber jetzt gibt es eine Netzwerkschleife, die ständig die "/" –