Ich arbeite an einem Laravel-Projekt und ich muss den Zugriff auf einige Seiten beschränken, so dass nur authentifizierte Benutzer diese Seite anzeigen können.Laravel 5 Zugriff auf Seiten mit Middleware beschränken
Um dies zu tun, erstellt eine Middleware: php artisan make:middleware OnlyRegisteredUser
und registriert es in der $routemiddleware
innerhalb App\Http\kernel.php
als
'onlyregistereduser' => \App\Http\Middleware\OnlyRegisteredUser::class,
und das ist die Klasse. es Umleitungen an auth/login
Benutzer, wenn nicht in
public function handle($request, Closure $next, $right=null)
{
$user = $request->user();
if ($user && $user->onlyregistereduser()) {
return $next($request);
}
return redirect('auth/login');
}
Hier ist mein Weg ist:
Route::get('admin/poem', ['middleware' => 'onlyregistereduser:admin', 'uses'=>'[email protected]']);
admin
ist ein Parameter meiner Middleware übergeben. Es ist aus meinem Benutzermodell genommen, die eine `Enum‘ Spalt wie folgt:
public function up()
{
Schema::create('users', function (Blueprint $table) {
//...
$table->enum('rights', ['admin', 'guest'])->nullable();
// ...
});
}
nun Zugriff auf einig meiner Controller-Methoden zu beschränken, zum Beispiel erstellen, ich einen Konstruktor meines PoemsController
wie gezeigt hinzugefügt:
public function __construct()
{
$this->middleware('onlyregistereduser');
}
Mein Problem ist nun, dass diese jede einzelne Route zum PoemsController
ließ mich auf die Login-Seite umleiten. Und wieder nach dem Login, es bringt mich nicht zu der Seite, die ich besuchen wollte. es bringt mich stattdessen auf die Homepage. Was ich will ist, den Zugriff auf nur einige der Controller-Methoden und nicht alle von ihnen zu beschränken und in der Lage sein, nach der Benutzeranmeldung auf die beabsichtigte Seite umleiten. Ich hoffe, Sie verstehen mein Problem. Jede Hilfe wird sehr geschätzt.