Integrera med WordPress för auktorisering
En andra del av serien om att integrera Logto med WordPress, med fokus på auktorisering.
I den föregående artikeln diskuterade vi hur man integrerar Logto för autentisering i WordPress. Denna artikel, som del två, kommer att fördjupa sig i auktoriseringsprocessen, med fokus på rollsysten i WordPress och hur man implementerar rollmapping med Logto, eftersom plugin-programmet vi använde i föregående artikel inte tillhandahåller auktoriseringsmöjligheter direkt.
Vi kommer att skapa en rollmappingfunktion som automatiskt tilldelar WordPress-roller till användare baserat på deras roller som tillhandahålls av Logtos RBAC (Rollbaserad åtkomstkontroll).
Förstå WordPress användarroller
WordPress har ett inbyggt system för hantering av användarroller som definierar vilka åtgärder (möjligheter) en användare kan utföra på en webbplats. De förinställda användarrollerna inkluderar Administratör, Redaktör, Författare, Medarbetare och Prenumerant, var och en med sitt eget uppsättning av möjligheter.
Dessa roller är avgörande för att upprätthålla webbplatsens säkerhet och effektivitet, eftersom de hjälper till att säkerställa att användarna har lämpliga åtkomstnivåer baserat på deras ansvar.
Lösningen: anpassad rollmapping
Logto använder Rollbaserad åtkomstkontroll (RBAC) som sin auktoriseringsmodell och använder "scopes" som den minsta enheten av behörighet. Dessa scopes definierar de specifika åtgärder som en autentiserad användare får utföra inom en applikation. WordPress fungerar dock enligt en annan princip för hantering av användarbehörigheter och förlitar sig på fördefinierade "roller" som bundlar olika möjligheter tillsammans.
Med tanke på denna fundamentala skillnad föreslår vi att skapa speciella roller inom Logto som motsvarar de roller som definieras i WordPress. Dessa roller kanske inte har några scopes, de används endast som en referens för att mappa användare till WordPress-roller.
Förutsättningar
Innan du fortsätter, se till att du har följande:
- Slutför den föregående artikeln om att integrera Logto med WordPress för autentisering, detta inkluderar:
- En WordPress-webbplats med administratörsåtkomst.
- Ett Logto-konto med en applikation som ställts in för din WordPress-webbplats.
- OpenID Connect Generic-plugin installerad och konfigurerad på din WordPress-webbplats.
- Ställ in roller i Logto som motsvarar rollerna i WordPress. Till exempel, om du har en 'redaktör'-roll i WordPress, skapa en 'group:editors'-roll i Logto.
Implementera rollmapping med anpassad kod
För att implementera rollmapping kommer vi att lägga till anpassad kod i WordPress-temats functions.php
-fil. Detta innebär att använda wp_login
-aktionsknappen, som triggar när en användare loggar in. Här är en steg-för-steg-guide för hur man ställer in detta:
Steg 1: åtkomst till ditt temas functions.php
Öppna ditt temas functions.php
-fil. Du kan komma åt denna fil via WordPress adminpanel genom att navigera till Utseende > Temaredigerare och välja functions.php
från filerna på högra sidan. Eller i källkoden, navigera till din WordPress tematkatalog och hitta functions.php
-filen. Denna fil låter dig lägga till anpassade PHP-funktioner som utökar funktionaliteten av din WordPress-webbplats.
Steg 2: skriv rollmappingfunktionen
Nedan är ett enkelt exempel på en funktion som du kanske lägger till i functions.php. Denna funktion kommer att triggas vid användarinloggning och kommer att tilldela roller baserat på användarens roles
-anspråk hämtat från Logto.
Steg 3: förstå koden och anpassa den
-
logto_handler
-funktionen: Denna funktion tar två parametrar:$user_login
(användarnamn) och$user
(användarobjekt). Den hämtar roller från Logto som lagrades i användarmetaanvändningsdata somopenid-connect-generic-last-user-claim
, mappar denna roll till en motsvarande WordPress-roll och tilldelar den till användaren. -
add_action
: Denna rad kopplarlogto_handler
-funktionen tillwp_login
-aktionen, som triggas efter en användarinloggning.10
är prioriteten (standard) och2
anger antalet argument funktionen accepterar.
Exemplet ovan tilldelar redaktörsrollen till användare som autentiserats via Logto med rollnamn group:editors
. Men i ett verkligt scenario kommer du troligtvis behöva implementera fler typer av rollmapping.
Du kan hitta en lista över WordPress-roller och deras kapaciteter här.
Steg 4: testa din konfiguration
Låt oss nu testa rollmapping-funktionen genom att logga in med en användare som har group:editors
-roll i Logto. Efter inloggning, kolla användarens roll i WordPress för att säkerställa att mappningen fungerar korrekt.
Slutsats
Genom att integrera Logto med WordPress för både autentisering och auktorisering kan du förbättra säkerheten och funktionaliteten på din webbplats. Kom ihåg, medan koden som tillhandahålls här är ett grundläggande exempel, du kan behöva anpassa den för att passa rollerna och behörighetsstrukturen för din WordPress-webbplats.