Integrera med WordPress för auktorisering
En andra del av serien om att integrera Logto med WordPress, med fokus på 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).
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.
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.
Innan du fortsätter, se till att du har följande:
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:
Ö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.
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.
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 som openid-connect-generic-last-user-claim, mappar denna roll till en motsvarande WordPress-roll och tilldelar den till användaren.
add_action: Denna rad kopplar logto_handler-funktionen till wp_login-aktionen, som triggas efter en användarinloggning. 10 är prioriteten (standard) och 2 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.
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.
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.