Ich mache Projekt in Laravel. Ich möchte Benutzer entsprechend seiner Rolle umleiten.Wie wird nach Benutzerrolle mit Middleware umgeleitet?
Meine Tabellen sind,
Benutzer Tabellenfelder mit (ID, Name, Passwort).
Rolle Tabelle mit Feldern (ID, Rolle).
assigned_role Tabelle mit Feldern (id, role_id, user_id).
Ich habe User-Modell als,
User.php
public function roles()
{
return $this->belongsToMany('App\Role', 'assigned_roles', 'user_id', 'role_id');
}
Dafür habe ich eine Middleware als
RoleMiddleware 'RoleMiddleware' genannt erstellt haben:
public function handle($request, Closure $next)
{
$roles = $request->user()->roles;
foreach ($roles as $role) {
if($role->name != 'super-admin')
return redirect('/user');
}
return $next($request);
}
ich diese Middleware in kernel.php-Datei haben,
Kernel.php wie, ich weiß nicht,
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'role' => \App\Http\Middleware\RoleMiddleware::class,
];
aber jetzt sieht, wie diese Middleware zu verwenden. Als ich diese Middleware in als Route.php Datei hinzufügen,
Route::group(['middleware' => 'web'], function() {
Route::auth();
Route::group(['middleware' => 'role'], function() {
Route::get('/home', '[email protected]');
Route::get('/user', '[email protected]');
});
});
Aber wenn ich Prozess hat loggen leitet es an die richtige URL. Aber jetzt kann es Zugriff auf die Innenseiten geben, ohne zu prüfen, ob der Benutzer angemeldet ist oder nicht. Wenn ich einen Kommentar zum RoleMiddleware-Teil abgib, wird verhindert, dass auf interne Seiten zugegriffen wird, es sei denn, der Benutzer führt eine Protokollierung durch.
Ich weiß nicht, wie das geht.
Sie leiten den Benutzer nur dann um, wenn er NUR die Rolle 'Super-Admin' hat. In allen anderen Fällen wird der Benutzer umgeleitet. – blablabla
Ich bekomme nicht das, was Sie versuchen zu sagen – Amarja