web-dev-qa-db-ja.com

ログインをまったく無効にする

drupalサイトでログインを無効にしたいのですが、フォームを非表示にすることもできます。ログインが必要な場合は、sshセッションから有効にして、無効にしてからもう一度無効にします。

私はこれを.htaccessの書き換えルールで行うことを好みますが、正しいルールを理解できません。

更新(これはよくある質問のようです)

私はこのような.htaccessになりました:

 # disable well known Drupal user login endpoints
  RewriteCond %{QUERY_STRING} q=user
  RewriteRule ^/?$ http://%{HTTP_Host}/? [R=307,L]
  RewriteRule ^user$ http://%{HTTP_Host}/ [R=307,L]
  RewriteRule ^user/register$ http://%{HTTP_Host}/ [R=307,L]

  # goto user login with that "secret" URL
  RewriteRule ^op9__P87? /user [NC]
5
PeterMmm

別の方法は、ログインフォームへのアクセスをfalseに設定することです。ログインを再度有効にする場合は、フックをコメント化してください。

function mymodule_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'user_login') {
    $form['#access'] = FALSE;
  }
}
10
gilzero

たぶん Login Disable module が役に立ちますか?

Drupalサイトにログインできないようにします。ただし、?q = userログインフォームページの最後に追加する秘密鍵を知っている場合を除きます。ユーザーが秘密鍵を知った場合、認証中は、ユーザーアカウントの役割が引き続きチェックされます。「無効なログインのバイパス」が許可されていない場合は、アクセスが拒否され、カスタマイズ可能な「拒否された」メッセージが表示されます。

7
Jonathan Rowny

問題は、Drupalの問題ではなく、Apacheの構成の問題にあります。また、1つのページにあるユーザーログインフォームに依存しています。

# Pass all requests not referring directly to files in the filesystem to
# index.php. Clean URLs are handled in drupal_environment_initialize().

RewriteRule ^user$ - [G,L]
RewriteRule ^q=user$ - [G,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]

q=userルールは、q=userはログインページで終了します。

ユーザーのログインを無効にするモジュールがいくつかあることに注意してください(@Jonathan Rownyの提案など)。これは、シナリオによっては、より適切なオプションになる場合があります。

2
mpdonadio