web-dev-qa-db-fra.com

Secure Pages Best Practice

Je suis en train d'écrire un plugin qui a des codes courts frontaux qui affichent les informations/données d'un utilisateur. Si l'utilisateur n'est pas connecté, je dois rediriger vers une page/un formulaire de connexion front-end. Quelle serait la meilleure pratique ici? Mon plugin crée les pages que j'utilise et ajoute les codes courts à ces pages. Donc, s’il existe un moyen de "protéger" ces pages, j'aimerais bien les connaître.

1
clockwiseq

Je ne suis pas sûr des meilleures pratiques, mais j'ai quelques pages personnalisées sensibles à la connexion qui affichent simplement un message si l'utilisateur n'est pas connecté et tente d'afficher directement la page:

$logged_in = is_user_logged_in();

if($logged_in) {
?>
<article id="post">
        <?php the_content(); ?>
</article>
<?php
} else {
    _e('You are not logged in. Please ', 'abc');
    echo '<a href="' . site_url( 'login' ) . '">'. __('log in','abc') .'</a> ' . __('or','abc') . ' ';
    echo '<a href="' . site_url( 'register' ) . '">'. __('register','abc') .'</a>.';
}

Remarque: les pages login et register sont également des pages personnalisées.

1
montrealist

Vous ne pouvez pas rediriger les utilisateurs à partir d'un shortcode . Les codes courts s'exécutent trop tard - bien après l'envoi du contenu. Mais étant donné que votre plugin crée les pages , vous devriez pouvoir le faire:

function protect_plugin_page_wpse_101230() {
  if(is_page('page-slug') && !is_user_logged_in()) {
    wp_safe_redirect('your-login-page-url');
  }
}
add_action('template_redirect','protect_plugin_page_wpse_101230');
0
s_ha_dum