Heim  >  Artikel  >  PHP-Framework  >  So implementieren Sie rollenbasierten dynamischen Berechtigungswechsel in Laravel

So implementieren Sie rollenbasierten dynamischen Berechtigungswechsel in Laravel

WBOY
WBOYOriginal
2023-11-04 12:58:41839Durchsuche

So implementieren Sie rollenbasierten dynamischen Berechtigungswechsel in Laravel

Laravel ist ein beliebtes Framework für die Entwicklung von Webanwendungen, das auf der PHP-Sprache basiert. Es verfügt über viele hervorragende Funktionen, die es Programmierern ermöglichen, schnell hochwertige Webanwendungen zu erstellen. Dazu gehört der Einsatz von Middleware zur Implementierung wichtiger Funktionen wie Authentifizierung und Berechtigungskontrolle. In diesem Artikel untersuchen wir, wie man rollenbasierten dynamischen Berechtigungswechsel in Laravel implementiert, und stellen gleichzeitig spezifische Codebeispiele bereit.

Was ist rollenbasierter dynamischer Berechtigungswechsel?

Dynamischer Berechtigungswechsel basierend auf Rollen ist ein gängiger Berechtigungskontrollmodus. In diesem Modell stellen Benutzerrollen im System eine Reihe von Betriebsberechtigungen dar. Nach der Anmeldung werden den Benutzern entsprechend ihrer Rollen entsprechende Berechtigungen zugewiesen. Während der Benutzer das System nutzt, kann der Systemadministrator im Hintergrund die Rolle des Benutzers ändern und damit die Bedienberechtigungen des Benutzers ändern.

Implementieren des rollenbasierten dynamischen Berechtigungswechsels in Laravel

Laravel bietet viele hervorragende Funktionen zum Implementieren des rollenbasierten dynamischen Berechtigungswechsels. Im Folgenden werden wir Schritt für Schritt ein einfaches Beispiel implementieren. Anhand dieses Beispiels können Sie besser verstehen, wie Sie den rollenbasierten dynamischen Berechtigungswechsel in Laravel implementieren.

Schritt 1: Datenbank und Benutzertabelle erstellen

Erstellen wir zunächst eine Datenbank und eine Benutzertabelle. Die Benutzertabelle umfasst ID, Benutzername, E-Mail, Passwort, Rollen-ID, Erstellungszeit und Aktualisierungszeit.

Schritt 2: Definieren Sie das Benutzermodell

Als nächstes müssen wir das entsprechende Benutzermodell definieren. In Laravel können Sie den Artisan-Befehl verwenden, um ein Modell zu erstellen:

php artisan make:model User

Dann können wir eine GehörtTo()-Methode definieren, die das Rollenmodell im generierten Benutzermodell zuordnet. Das Codebeispiel lautet wie folgt:

class User extends Model
{
    public function role()
    {
        return $this->belongsTo('AppRole');
    }
}

Schritt 3 : Erstellen Sie die Rollentabelle und das Rollenmodell.

Erstellen Sie ein Charakterblatt und ein Charaktermodell. Die Rollentabelle enthält zwei Felder: ID und Rollenname.

Schritt 4: Definieren Sie die Beziehung zwischen Rollenmodellen

Im Rollenmodell können wir die Berechtigungen definieren, die diese Rolle hat. Sie können die Methode „gehörtToMany()“ verwenden, mit der eine Viele-zu-Viele-Beziehung zwischen Rollen und Berechtigungen hergestellt werden kann. Das Codebeispiel lautet wie folgt:

class Role extends Model
{
    public function permissions()
    {
        return $this->belongsToMany('AppPermission', 'permission_role');
    }
}

Schritt 5: Berechtigungstabelle und Berechtigungsmodell erstellen

Erstellen Sie eine Berechtigungstabelle und ein Berechtigungsmodell. Die Berechtigungstabelle enthält zwei Felder: ID und Berechtigungsname.

Schritt 6: Definieren Sie die Beziehung zwischen Berechtigungsmodellen

Im Berechtigungsmodell können wir die Beziehung zwischen Rollen und Berechtigungen definieren. Sie können die Methode „gehörtToMany()“ verwenden, mit der eine Viele-zu-Viele-Beziehung zwischen Rollen und Berechtigungen hergestellt werden kann. Der Beispielcode lautet wie folgt:

class Permission extends Model
{
    public function roles()
    {
        return $this->belongsToMany('AppRole', 'permission_role');
    }
}

Schritt 7: Middleware definieren

In Laravel wird Middleware zur Verarbeitung von Anfragen und Antworten verwendet, einschließlich Authentifizierung und Autorisierung. Wir können eine Middleware definieren, um zu prüfen, ob der Benutzer die Berechtigung hat, den angeforderten Vorgang auszuführen. Das Codebeispiel lautet wie folgt:

namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesAuth;

class CheckPermission
{
    public function handle($request, Closure $next,$permissions)
    {
        $sessionUser = Auth::user();

        foreach($sessionUser->role()->get() as $role)
        {
            $role_permissions = $role->permissions()->pluck('name')->toArray();
            foreach($permissions as $perm)
            {
                if (in_array($perm, $role_permissions)) {
                    return $next($request);
                } 
            }
        }
        return redirect('/login');
    }
}

Im obigen Code rufen wir zunächst die Benutzerinformationen aus der Sitzung ab und geben die Berechtigungen der entsprechenden Rolle über die Rolle des Benutzers zurück. Die Variable $permissions enthält die Berechtigungen, die gesteuert werden müssen . Wenn der Benutzer über die entsprechende Berechtigung verfügt, wird die Ausführung fortgesetzt. Andernfalls leiten Sie zur Anmeldeseite weiter.

Schritt 8: Middleware verwenden

Wir können die Middleware CheckPermission in der Route definieren, um Benutzer von der Nutzung bestimmter Routen auszuschließen. Das Codebeispiel lautet wie folgt:

Route::get('admin/dashboard',['middleware'=>['permission'],'uses'=>'AdminController@dashboard']);

Im Controller können wir wie folgt überprüfen, ob der Benutzer die Berechtigung zur Verwendung dieser Route hat:

class AdminController extends Controller
{
    public function dashboard()
    {
        $this->middleware('check-permission:user-list');
        return view('admin.index');
    }
}

Nachdem Sie im Browser auf die Route zugegriffen haben, rufen Sie die Rolle und Berechtigungen des aktuellen Benutzers in der Sitzung ab . Wenn der Benutzer über die entsprechende Berechtigung verfügt, wird die Ausführung fortgesetzt.

Fazit

In diesem Artikel haben wir besprochen, wie man rollenbasierten dynamischen Berechtigungswechsel in Laravel implementiert. Die Implementierung der Berechtigungskontrolle über Middleware ist eine sehr gängige Methode. Bitte achten Sie bei der Implementierung darauf, dass Ihr System über ein vollständiges Rollenmanagement verfügt und eine Viele-zu-Viele-Beziehung zwischen Rollen und Berechtigungen besteht. Nur so können in Laravel sehr leistungsfähige Authentifizierungs- und Autorisierungsfunktionen implementiert werden.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie rollenbasierten dynamischen Berechtigungswechsel in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn