web-dev-qa-db-ja.com

/ user / login以外の代替ログインページの作成

私はDrupal 7で次のコードを使用してこれを行うことができました:

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;
    }

私の質問、このコードは完全ですか、それともメニュー項目配列の一部の構成が不足していますか?コードは安全ですか?

7
W.M.

はい、コードは完全で、デフォルトのログインフォームと同じくらい安全です。

ただし、/user/loginフォームを置き換える場合は、ユーザーがそこに到達する可能性があるすべてのシナリオ([site:login-url]トークン、他のモジュールなど)を検討し、リダイレクトまたはアクセスを介して適切に処理する必要があることに注意してください拒否された応答(たとえば、サイトで唯一の登録ユーザーになる場合)。

基本は次のとおりです。

リダイレクト

何らかの理由でユーザーを/user/loginから/authenticateにリダイレクトする場合は、 Redirect モジュールを使用するか、カスタムモジュールにhook_menu_alter()を実装する必要があります。

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

交換

他のすべてのユーザーが/user/loginにアクセスできないようにする場合は、カスタムモジュールにhook_menu_alter()を再度実装することで、そのパスを無効にすることができます。

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

ただし、すべてを徹底的にテストし、システム/user/loginに依存するモジュールがないこと、および影響を受けるワークフロー([site:login-url]トークンなど)がないことを確認する必要があることに注意してください。

お役に立てれば。

7
Aram Boyajyan

私のサイトの1つで Rename Admin Paths を使用して、/ user/...および/ admin/...の代わりに別のURLを設定しました。すぐに使用できます。

0
fndtn357