Beveiliging Code snippets Plugins

Cross site authenticatie voorkomen voor gebruikers op WordPress multisite

Ik ben op dit moment bezig met een applicatie die deels werkt met het authenticeren van gebruikers op basis van het domein waarmee ze inloggen: verschillende gebruikers kunnen bij een account horen, en de applicatie can controleren of de gebruiker bij een account hoort op basis van het domein.

WordPress Multisite is erg geschikt hiervoor. Er is alleen één ding dat hierbij niet zo handig is: WordPress beschouwt je als zijnde ingelogd op elk deel van het netwerk, ook als je alleen maar lid bent van een van de subsites.

Om cross-site login te voorkomen heb ik wat code toegevoegd die op elke request uitgevoerd wordt op de authenticate hook. Het is een vrij simpel stukje code: het controleert of de ingelogde gebruiker lid is van het huidige blog. Zo niet, dan word je uitgelogd en naar het netwerk site_url geredirect.

add_action('authenticate', array($this, 'validate_on_login'), 100, 3);

function validate_on_login(){
  if (!is_user_logged_in()) {
     return;
  }

  $user = wp_get_current_user();

  //allow only login if user is member of this blog

  if (!is_user_member_of_blog( $user->ID, get_current_blog_id() ) && !is_super_admin( $user->ID )) {
    wp_logout();
    wp_redirect(network_site_url());exit();
  }

}

Related Articles

  • Een enkele sticky post tonen

    Sticky posts zijn handig als je bijvoorbeeld op je homepage één post wilt tonen die blijft “plakken”, dus niet alleen de meest recente, maar een post of artikel die daar...
  • Bij vorige volgende posts binnen dezelfde categorie blijven

    WordPress heeft een hoop functionaliteiten ingebouwd, zoals ook bijvoorbeeld de get_previous_post(), get_next_post(), of get_previous_post_link() functies. Maar wat als je de vorige (of volgende) post wilt van dezelfde categorie? Dat lijkt...
  • Dynamisch de alt en title van een afbeelding aanpassen

    Alt en title vaak niet ingevuld Als je automatisch afbeeldingen importeert, je hebt website redacteuren die de alt tags niet invullen, of je neemt een site in beheer waar dat...
  • Recent posts widget filteren op categorie

    Soms wil je in de recent posts widget alleen posts laten zien uit een bepaalde categorie. Dit is heel eenvoudig te doen met een paar regels code. Vul bij 6...

Laat een reactie achter