Erstellen einer anderen alternativen Anmeldeseite als / user / login

7

Ich habe dies in Drupal 7 mit dem folgenden Code geschafft:

function my_special_paths_menu() {

    $items['authenticate'] = array(
        'title' => 'Log in',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('user_login'),   
        'access callback' => 'user_is_anonymous',   
      );
     return $items;
    }

Meine Frage, ist dieser Code vollständig oder fehlt eine Konfiguration im Menüelement-Array? Ist der Code so sicher wie er ist?

WM
quelle

Antworten:

7

Ja, Ihr Code ist vollständig und genauso sicher wie das Standard-Anmeldeformular.

Beachten Sie jedoch, dass Sie, wenn Sie das /user/loginFormular ersetzen möchten, über alle Szenarien nachdenken müssen, in denen Benutzer dort landen könnten (z. B. [site:login-url]Token, andere Module usw.), und diese über Weiterleitungen oder Antworten, denen der Zugriff verweigert wurde, angemessen behandeln müssen (zB wenn Sie der einzige registrierte Benutzer auf der Website sind).

Hier sind die Grundlagen:

Umleiten

Wenn Sie Benutzer umleiten aus wollen /user/loginzu /authenticatewelchem Grunde auch immer, müssen Sie entweder den verwenden Redirect Modul oder implementieren hook_menu_alter()in Ihrem benutzerdefinierten Modul:

function YOUR_MODULE_menu_alter(&$items) {
  $items['user/login']['page callback'] = 'drupal_goto';
  $items['user/login']['page arguments'] = 'authenticate';
}

Ersetzen

Wenn Sie /user/loginallen anderen Benutzern den Zugriff verweigern möchten , können Sie diesen Pfad einfach deaktivieren, indem Sie Folgendes erneut hook_menu_alter()in Ihrem benutzerdefinierten Modul implementieren :

function YOUR_MODULE_menu_alter(&$items) {
  $items['user/login']['access callback'] = FALSE;
}

Beachten Sie jedoch, dass Sie alles gründlich testen müssen und sicherstellen müssen, dass Sie keine vom System abhängigen Module haben und dass /user/loginkeine Workflows betroffen sind (z [site:login-url]. B. Token).

Hoffe das hilft.

Aram Boyajyan
quelle
0

Ich habe auf einer meiner Websites die Option "Admin-Pfade umbenennen" verwendet , um eine andere URL anstelle von / user / ... und / admin / ... zu haben. Funktioniert sofort.

fndtn357
quelle