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...
  • Een WordPress website beveiligen

    WordPress is enorm populair, en niet alleen onder doorgewinterde ontwikkelaars. Juist doordat het zo eenvoudig op te zetten en uit te breiden is zijn er ook veel doe het zelvers...
  • Google Analytics spamvrij maken en houden

    Last van referral spam? Door de stappen in dit artikel te volgen lees je weer betrouwbare gegevens af van Google Analytics. Toekomstige referral spam voorkomen Dit zouden standaardinstellingen voor ieder...
  • Emails versturen vanaf je localhost lokale WordPress installatie

    Het versturen van emails vanuit een online WordPress applicatie is niet zo moeilijk. Veel plugins regelen dit al voor je, en in WordPress is een mooie mailfunctie die je in...

Laat een reactie achter