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


7

私は、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

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

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

基本は次のとおりです。

リダイレクト

あなたがからユーザーをリダイレクトしたい場合/user/login/authenticate、何らかの理由で、あなたはどちらかを使用する必要がありますリダイレクトモジュールを、あるいは実装する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]トークンなど)がないことを確認する必要があることに注意してください。

お役に立てれば。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.