Integracja z WordPress dla autoryzacji
Druga część serii o integracji Logto z WordPress, skoncentrowana na autoryzacji.
W poprzednim artykule omówiliśmy, jak zintegrować Logto do uwierzytelniania w WordPress. Ten artykuł, jako druga część, zagłębi się w proces autoryzacji, koncentrując się na systemie ról w WordPress i na tym, jak zaimplementować mapowanie ról z Logto, biorąc pod uwagę, że wtyczka, której używaliśmy w poprzednim artykule, nie oferuje bezpośrednio możliwości autoryzacji.
Stworzymy funkcję mapowania ról, która automatycznie przydziela role WordPress użytkownikom na podstawie ról dostarczanych przez Logto RBAC (Role-Based Access Control).
Zrozumienie ról użytkowników WordPress
WordPress ma wbudowany system zarządzania rolami użytkowników, który określa jakie czynności (możliwości) użytkownik może wykonać na stronie. Domyślne role użytkowników obejmują Administratora, Redaktora, Autora, Współtwórcę i Abonenta, każdy z własnym zestawem możliwości
Te role są kluczowe dla utrzymania bezpieczeństwa i efektywności działania strony, ponieważ pomagają zapewnić, że użytkownicy mają odpowiednie poziomy dostępu na podstawie swoich obowiązków.
Rozwiązanie: niestandardowe mapowanie ról
Logto korzysta z Role-Based Access Control (RBAC) jako swój model autoryzacji, wykorzystując "zakresy" jako najmniejszą jednostkę pozwolenia. Te zakresy definiują konkretne czynności, które uwierzytelniony użytkownik ma prawo wykonać w obrębie aplikacji. Jednak WordPress działa na innej zasadzie zarządzania uprawnieniami użytkowników, polegającej na predefiniowanych "rolach", które łączą różne możliwości.
Biorąc pod uwagę tę fundamentalną różnicę, sugerujemy tworzenie specjalnych ról w Logto, które odpowiadają rolom zdefiniowanym w WordPress. Te role mogą nie mieć żadnych zakresów, są wykorzystywane tylko jako punkt odniesienia do mapowania użytkowników na role WordPress.
Wymagania wstępne
Przed kontynuacją upewnij się, że masz:
- Zakończ poprzedni artykuł na temat integracji Logto z WordPress do uwierzytelniania, obejmuje to:
- Witrynę WordPress z dostępem administratora.
- Konto Logto z przygotowaną aplikacją dla twojej witryny WordPress.
- Wtyczkę OpenID Connect Generic zainstalowaną i skonfigurowaną na twojej stronie WordPress.
- Ustaw role w Logto, które odpowiadają rolom w WordPress. Na przykład, jeśli masz rolę 'editor' w WordPress, utwórz rolę 'group:editors' w Logto.
Implementacja mapowania ról z niestandardowym kodem
Do implementacji mapowania ról dodamy niestandardowy kod do pliku functions.php
motywu WordPress. Wymaga to użycia haczyka wp_login
, który jest wyzwalany podczas logowania użytkownika. Oto krok po kroku, jak to zrobić:
Krok 1: dostęp do funkcji motywu functions.php
Otwórz plik functions.php
swojego motywu. Można uzyskać dostęp do tego pliku poprzez panel administratora WordPress, przechodząc do Wygląd > Edytor motywów i wybierając functions.php
z listy plików po prawej stronie. Lub w kodzie źródłowym, przejdź do katalogu motywu WordPress i znajdź plik functions.php
. Ten plik pozwala na dodanie niestandardowych funkcji PHP, które rozszerzają funkcjonalność witryny WordPress.
Krok 2: napisz funkcję mapowania ról
Poniżej znajduje się prosty przykład funkcji, którą możesz dodać do functions.php. Ta funkcja będzie wyzwalana podczas logowania użytkownika, i przydzieli role na podstawie roli roles
podanej przez Logto.
Krok 3: zrozumienie kodu i dostosowanie go
-
Funkcja
logto_handler
: Ta funkcja przyjmuje dwa parametry:$user_login
(nazwa użytkownika) i$user
(obiekt użytkownika). Pobiera role z Logto, które są przechowywane w meta danych użytkownika jakoopenid-connect-generic-last-user-claim
, mapuje tę rolę na odpowiednią rolę WordPress i przypisuje ją użytkownikowi. -
add_action
: Ta linia łączy funkcjęlogto_handler
z akcjąwp_login
, która jest wyzwalana po zalogowaniu użytkownika.10
to priorytet (domyślny), a2
wskazuje liczbę argumentów akceptowanych przez funkcję.
Powyższy przykład przypisuje rolę 'editor' użytkownikom uwierzytelnianym przez Logto z nazwą roli group:editors
. Jednak w prawdziwym scenariuszu, prawdopodobnie będziesz musiał zaimplementować więcej rodzajów mapowania ról.
Możesz znaleźć listę ról WordPress i ich możliwości tutaj.
Krok 4: przetestuj swoje ustawienia
Teraz przetestujmy funkcję mapowania ról, logując się za pomocą użytkownika, który ma rolę group:editors
w Logto. Po zalogowaniu sprawdź rolę użytkownika w WordPress, aby upewnić się, że mapowanie działa poprawnie.
Wnioski
Integrując Logto z WordPress zarówno do uwierzytelniania, jak i autoryzacji, możesz zwiększyć bezpieczeństwo i funkcjonalność swojej strony. Pamiętaj, że podany tutaj kod jest tylko podstawowym przykładem, być może będziesz musiał go dostosować do struktury ról i uprawnień swojej strony WordPress.