Gdy zarządzasz witryną WordPress ze środowiskiem Staging, push zmian na produkcję jest procesem krytycznym. Zapewnia spójność i poprawne działanie witryny produkcyjnej. Podczas tego procesu aktywne sesje użytkowników z witryny Staging mogą jednak utrzymywać się na produkcji, co może powodować zagrożenia bezpieczeństwa lub nieoczekiwane zachowania — np. użytkownicy widzą stare i nieaktualne treści.
Aby temu zaradzić i mieć pewność, że wszyscy użytkownicy zobaczą zaktualizowaną witrynę, możesz automatycznie wylogować wszystkich użytkowników po pushu Staging na produkcję, używając niestandardowego filtra WordPress. Zapewnia to unieważnienie wszelkich danych sesji z witryny Staging i wymusza ponowne logowanie. Oto jak wdrożyć to rozwiązanie z WP STAGING.
Contents
Problem: trwałość sesji
Gdy pushujesz witrynę Staging na produkcję, dane sesji użytkowników (w tym tokeny logowania) również są przenoszone. W rezultacie:
- Użytkownicy z witryny Staging mogą pozostać zalogowani na produkcji.
- Wrażliwe dane mogą przypadkowo pozostać dostępne.
- Mogą pojawić się zagrożenia bezpieczeństwa z powodu nadużyć tokenów.
Rozwiązanie: użyj niestandardowego filtra do unieważnienia sesji użytkowników
Wykorzystując akcję wpstg_pushing_complete dostarczaną przez WP STAGING, możesz uruchomić funkcję unieważniającą wszystkie aktywne sesje użytkowników natychmiast po pushu. Osiąga się to przez usunięcie tokenów sesji przechowywanych w bazie danych WordPress.
Implementacja kodu
Oto snippet kodu, który wylogowuje wszystkich użytkowników po pushu witryny Staging na produkcję:
/**
* Log out all users after pushing a staging site to production.
*/
function myPrefixinvalidateAllUsers()
{
// Access the global $wpdb object to interact with the database
global $wpdb;
// Cleanup session tokens from the usermeta table
$wpdb->query("DELETE FROM {$wpdb->prefix}usermeta WHERE meta_key = 'session_tokens'");
}
// Hook the function to WP Staging's 'wpstg_pushing_complete' action
add_action('wpstg_pushing_complete', 'myPrefixinvalidateAllUsers');
Jak to działa
- Czyszczenie bazy danych:
FunkcjamyPrefixinvalidateAllUsers()oddziałuje na tabelęusermetaWordPressa, usuwając wszystkie wpisy powiązane z meta-kluczemsession_tokens. To skutecznie unieważnia wszystkie aktywne sesje użytkowników. - Uruchamianie akcji:
Hookwpstg_pushing_completejest wywoływany po zakończeniu przez WP STAGING procesu pushu witryny Staging na produkcję. Funkcja wykonuje się wtedy automatycznie. - Rezultat:
Po usunięciu tokenów sesji wszyscy użytkownicy są wylogowani i muszą ponownie się zalogować, aby uzyskać dostęp do witryny produkcyjnej.
Kroki wdrożenia
- Utwórz plugin Must-Use (MU-plugin):
- Przejdź do katalogu
wp-content/mu-plugins/witryny produkcyjnej. Jeśli katalog nie istnieje, utwórz go. - Utwórz nowy plik PHP, np.
invalidate-user-sessions.php. - Skopiuj i wklej powyższy snippet kodu do tego pliku.
- Przejdź do katalogu
- Wdrożenie:
- Zapisz plik i upewnij się, że został wgrany do katalogu
mu-plugins. - WP STAGING będzie teraz automatycznie wylogowywał wszystkich użytkowników po każdym pushu na produkcję.
- Zapisz plik i upewnij się, że został wgrany do katalogu
Korzyści
- Lepsze bezpieczeństwo: użytkownicy ze środowiska Staging nie mogą przypadkowo uzyskać dostępu do witryny produkcyjnej.
- Większa kontrola: gwarantuje, że tylko zweryfikowani użytkownicy mogą się ponownie zalogować po wdrożeniu.
- Usprawnione zarządzanie: automatyzuje zarządzanie sesjami podczas wdrożenia.
Dodatkowe uwagi
- Rozwiązanie dotyczy wyłącznie funkcji push-to-production WP STAGING. Nie wpływa na inne funkcjonalności WordPressa ani sesje utworzone później.
- Przy konfiguracjach multisite upewnij się, że skrypt uruchamia się na wszystkich podwitrynach, jeśli to konieczne.
Dzięki temu podejściu możesz utrzymać bezpieczne i niezawodne środowisko produkcyjne, zapewniając płynne przejście z Staging na produkcję.