web-dev-qa-db-ja.com

ログインフォームをアクセス拒否ページに追加するにはどうすればよいですか?

アクセス拒否ページにログインフォームを追加しようとしていますが、これはUIから可能かどうか疑問に思っています。

提案/アイデアはありますか?

7
jelly46

ここでの別の解決策は LoginToboggan module です。ログイン機能に多くの異なる拡張機能を提供します。

Logintobogganモジュールは、外部モジュールのdrupalログインシステムにいくつかの変更を加えたもので、次の機能と使いやすさの向上を提供しています。

  1. ユーザーがユーザー名または電子メールアドレスを使用してログインできるようにします。
  2. ユーザーがすぐにログインできるようにします。
  3. ログインしていない(匿名)ユーザーに対して、アクセス拒否ページにログインフォームを提供します。
  4. モジュールは2つのログインブロックオプションを提供します。1つはJavaScriptを使用して、[ログイン]をクリックするとすぐにブロック内のフォームを表示します。もう1つは、ユーザーを別のページに移動しますが、ログイン時にユーザーを元のページに戻します。
  5. 正確を期すために、2つのEメールフィールドで登録フォームをカスタマイズします。
  6. 「即時ログイン」機能を使用する場合、オプションでユーザーを特定のページにリダイレクトします。
  7. 必要に応じて、電子メールアドレスの検証時にユーザーを特定のページにリダイレクトします。
  8. オプションで、ログインの成功を示すユーザーメッセージを表示します。
  9. オプションで、ログインフォームと登録フォームの両方を1つのページに結合します。
  10. 必要に応じて、未定義のユーザーを事前定義された間隔でシステムから削除します(この機能の構成に関する重要な情報については、install.txtの警告セクションをお読みください)。
  11. ルールモジュールと統合して、ユーザーが電子メール検証プロセスを介して検証するときにさまざまなタスクを実行します(例については http://drupal.org/node/880904 を参照)

設定構成フォームには、アクセス時の現在のログインフォーム(403)と呼ばれるオプションがあり、この正確な機能のオン/オフを切り替えます。

4
Shawn Conn

オプション1:CustomErrorモジュールを使用する

CustomError モジュールを使用すると、サイト管理者はHTTPステータスコード403(アクセス拒否)および404(見つかりません)のカスタムエラーページを作成できます。それぞれのノードを作成する必要はありません。機能に関する詳細(プロジェクトページから):

  • 設定可能なページのタイトルと説明。
  • 通常のノードのように作成者と日付/時刻ヘッダーはありません。
  • HTML形式のテキストはページの本文に配置できます。
  • エラーページはtheableです。
  • ログインしていないユーザーがログインを必要とする領域にアクセスしようとすると、ログイン後にアクセスしようとしていたページにリダイレクトされます。
  • 404のカスタムリダイレクトを許可します。

ログインしていないユーザーがログインを必要とする領域にアクセスしようとすると、ログイン後にアクセスしようとしたページにリダイレクトされます。」に関する部分に興味があるはずです。

オプション2:ルールモジュールを使用してユーザー/ログインにリダイレクトする

"「アクセス拒否ページ」の設定を追加し、そのページに「ユーザーログイン」ブロックを表示する]は、実際に機能するソリューションです。ただし、これをもう少し進めて、ユーザーエクスペリエンスをAbitMOREで強化することもできます。 「 ルールモジュールを使用して匿名ユーザーをログインページにリダイレクトする方法 」に関する質問への回答で説明されているアプローチのバリエーションを使用する。

そのためには、「デフォルト403」ページのパスが「no_access」に設定されていると想定します(その管理ページの下部にある/admin/config/system/site-informationを使用)。次に Rules モジュールを使用して、Eventのような「ノード 'no_access'にアクセスした後」のようなルールを作成します。したがって、ルール全体は次のようになります。

  • イベント:ノード「no_access」にアクセスした後
  • 条件:

    1. ユーザーは役割を持っています-Parameter: User: [site:current-user], Roles: anonymous user
    2. NOTテキスト比較-Parameter: Text: [site:current-page:url], Matching text: user/login
  • アクション:ページリダイレクト-Parameter: URL: user/login

そうしたい場合は、別のActionを追加して、Drupal =「ログインが必要なページにアクセスしようとしました...」のようなメッセージ領域。

確かに、追加の貢献モジュール( Rules )を有効にする必要があるかもしれません。しかし、その人気の高まりからもわかるように、このモジュールには数十のユースケースがあるため、そのモジュールはおそらくほとんどすべてのサイトですでに有効になっています( Views モジュールと同様)。この質問の1つのバリエーション:「ページが見つかりません」のユーザーエクスペリエンスを同様の方法で強化してみませんか?

オプション3:専用ページにユーザーログインブロックを表示する

ルール「アクション」(user/loginにリダイレクトする)の代替としての別のバリエーションは、「my_login_page_with_login_block」のようなパスを使用して、指定されたノードを作成することです。次に、これを "User login"ブロック(admin/structure/block経由)の構成と組み合わせます。

  • 選択したテーマ領域にそのブロックを表示します。
  • そのユーザーログインブロックの右側にある「configure」リンクを使用して、「ページ」の「表示設定」を設定します。つまり"特定のページにブロックを表示"のオプションを "リストされたページのみ"に変更し、その下のテキストボックス内にパス(my_login_page_with_login_block)を指定します。何らかの理由でパスを使用したくない場合は、代わりにパスとしてnode/nid(nid =ノードのID)を指定します。
10
Pierre.Vriens

サイト構成(admin/config/system/site-information)に「デフォルト403(アクセス拒否)ページ」の設定を追加できます。次に、このページに「ユーザーログイン」ブロック(admin/structure/block/manage/user/login/configure)を表示します。

5
Andrew

LoginToboggan モジュールを使用しない場合、指定されたページに表示され、匿名ユーザーに制限されるようにユーザーログインブロックを構成できます。ユーザーログインブロックの表示設定のブロック:

  1. 「ページ」タブで、「特定のページにブロックを表示」を「リストされたページのみ」に設定し、ページを入力します。

  2. [ロール]タブで、特定のロール設定の[ブロックを表示]の[匿名ユーザー]をオンにします。

3
MikeSNP

理論的には、サイト情報の下のデフォルト403(アクセス拒否)ページを/ admin/config/system/site-informationのuser/loginに設定できます。

試したことはありませんが、それは単なるアイデアですか?

2
Connor Gurney