web-dev-qa-db-fra.com

Comment modifier / user en une URL personnalisée?

J'ai quelques petits Drupal 7 sites qui ne nécessitent pas que je me connecte tout le temps, et il n'y a pas d'utilisateurs. Je voudrais changer le chemin de connexion utilisateur pour autre chose pour dissuader les bots ciblage Drupal sur le chemin/user.
Comment puis-je atteindre cet objectif?

Je peux ajouter un CAPTCHA, mais je veux aussi changer le chemin.

5
Patoshi パトシ

Voir Renommer le module Admin Paths . Le but de ce module est de sécuriser drupal backend en redéfinissant le chemin d'administration. Vous pouvez changer l'utilisateur/login en quelque chose comme membre/login. Je suggère également d'ajouter une redirection dans votre htaccess vers la norme user/login user/register. De cette façon Drupal ne doit pas non plus servir le 404 lorsqu'un bot essaie d'accéder à ces pages. D'énormes économies de performances.

EDIT: En y réfléchissant davantage, vous n'avez pas du tout besoin d'un module supplémentaire. Ajoutez simplement un alias à /admin/config/search/path/add pour utilisateur/connexion, utilisateur/registre, etc., puis ajoutez simplement des redirections dans votre htaccess pour les anciens alias.

4
Nigel Waters

1.Vous pouvez afficher le formulaire de connexion sur n'importe quel site ou dans un bloc comme celui-ci:

$form = drupal_get_form("user_login"); 
$form = drupal_render($elements);
print $form;

Il vous suffit alors de définir l'alias approprié pour cette page.

2 .hook_preprocess_page(&$variables).

$current_path = current_path();
 $current_alias = drupal_get_path_alias($current_path);
 if($current_alias == 'user'){
   drupal_goto('my-url');
 }
2
Paul Bönisch

J'ai une solution rapide et facile que j'utilise pour ce scénario sans modules requis. Utilisez htaccess pour rediriger tous les visiteurs vers un utilisateur ou un utilisateur/connexion vers un 404 (ou je les redirige vers une page cachée qui enregistre leur adresse IP afin que je puisse suivre la fréquence à laquelle ils visitent). Ensuite, lorsque vous souhaitez vous connecter, utilisez simplement un faux paramètre dans l'URL comme/user/login/12345 Cela enverra 99% de ces robots indésirables dans l'espace :)

1
Haz

Vous avez quelques approches pour changer le "utilisateur" Drupal chemin vers "my-url":

Tout d'abord, vous imitez la manière Drupal définit le chemin "utilisateur" sur le module de base de l'utilisateur. De cette façon, votre page "my-url" aura le même comportement que la d'origine.

Ensuite, pour terminer le travail, vous devrez rediriger toutes les demandes "utilisateur" vers votre chemin "my-url". Pour ce faire, vous pouvez utiliser du code personnalisé en utilisant le crochet hook_menu_site_status_alter () ou vous pouvez utiliser le module de redirection .

Voici une implémentation rapide avec du code personnalisé:

/**
 * Implements hook_menu().
 */
function yourmodule_menu() {

  // Registration and login pages.
  $items['my-url'] = array(
    'title' => 'User account',
    'title callback' => 'user_menu_title',
    'page callback' => 'user_page',
    'access callback' => TRUE,
    'file' => 'user.pages.inc',
    'weight' => -10,
    'menu_name' => 'user-menu',
    'file path' => drupal_get_path('module', 'user'),
  );

  return $items;
}

/**
 * Implements hook_menu_site_status_alter().
 */
function yourmodule_menu_site_status_alter(&$menu_site_status, $path) {
  if ($path == 'user') {
    drupal_goto('my-url');
  }
}

Remarque: le module de redirection n'est pas intégré au module de fonctionnalités. Si vous souhaitez propager automatiquement ce changement dans tous vos environnements, je vous suggère d'utiliser du code personnalisé.

1
gerzenstl

Exemple:

/**
 * Implements hook_url_outbound_alter().
 */
function custom_module_url_outbound_alter(&$path, &$options, $original_path) {
  // Alter paths for login and sign-up pages.
  if ($path === 'user/login' || $path === 'user/sign-up') {
    $path = 'omfg';
  }
}
0
klidifia