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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bauen Sie Ihre route wie unten code:
Route::get('/mypage', 'HomeController@mypage');
Öffnen Sie Ihre middleware-Klasse mit dem Namen RedirectIfAuthenticated und dann in Griff fucntion
schreiben Sie folgenden code:
Hoffe, es wird für Sie arbeiten.
Ihre route wie
//Index
siehe hier für weitere Informationen über routing.
Versuchen