1

Drupalユーザーの役割に基づいて、Drupalサイトのコンテンツへのアクセスを制限する必要があります。

http://site.com/managers/intro

http://site.com/managers/reviews

http://site.com/managers/up-for-raises

コンテンツは複数のコンテンツタイプにすることができ、1つの特定のコンテンツタイプに限定されません。これらのコンテンツタイプはサイトの他の場所で使用されるため、コンテンツタイプ全体をロックダウンすることはできません。

作成時にメニュー設定によってすべてのノード/ビューをそれらのアドレスに配置できますが、template.phpの一連の前処理関数以外のロールを介してアクセスを制限する方法がわかりませんが、それを行うための間違った方法である。

モジュールを検索して#drupal-support IRCを尋ねましたが、制限要因としてdrupalの役割を使用する結果は得られませんでした。

4

4 に答える 4

4

これは古い質問ですが、Path Accessモジュールはまさにこれを行います。以下は、そのプロジェクト ページからの抜粋です。

... Drupal サイトのすべてのページへのアクセス制御の追加レイヤーをサイト管理者に提供します。

利点: Drupal モジュールの多くはある程度のアクセス制御パーミッションを提供しますが、ユーザーが持つ可能性のあるすべての要件をカバーすることはできません。Path_access は、パス エイリアスに基づいてページを制限する手段を提供します。つまり、ワイルドカードを使用して、サイトのセクション全体から特定のユーザー ロール グループをロックアウトできます。

于 2010-02-05T19:30:55.523 に答える
2

'managers'が常にそのセクションのURLに含まれるhook_init場合は、現在のユーザーの役割がこれらの指定された役割の1つではなく、URLに含まれるかどうかを基本的に示すために使用する小さなモジュールを作成できるようです。 「/managers/」、次にdrupal_goto()ログインページ。

また、Rulesモジュールを使用して、これを非常に簡単に実行することもできますが、Rulesを使用するのがそれだけの場合は、それだけの価値はありません。

ノードごとのアクセスモジュール(すべてのもののノードアクセスなど)もたくさんありますが、これらはおそらく、そのような単純なタスクを実行する価値があるよりも多くの努力になるでしょう。

于 2009-11-16T15:52:19.490 に答える
1

私が正しければ、あなたが達成しようとしているのは、特定のロールだけが特定の URL にあるページにアクセスできるようにすることです。

CONTRIB アクセスモジュールを使用する

mcrittenden が既に述べたように、コンテンツへのアクセスを微調整できるモジュールが多数あります。その中でも、コンテンツ アクセスは、ノードごとに個別に権限を設定できるため、確実にやりたいことを実行できます。

フラグ + ビューを使用する

コーディングせずにこれを行う別の方法は、flag モジュールviews モジュールを組み合わせることです。これが私がどのように行うかの簡単な概要です:

  1. 質問で指定したアドレスのいずれかで表示する必要があるコンテンツ (あらゆる種類のコンテンツ!) をマークするために使用できる 3 つのフラグを作成します (例: マークするために使用するフラグ「イントロ」を作成します)。ページ「/mangers/intro」に表示する必要があるノード)
  2. フラグに基づいてフィルタリングすることにより、必要なノードをDBから引き出す3つのビュー(質問にリストしたアドレスごとに1つ)を作成します。
  3. ロールに応じて、これらのビューの権限を設定します。

URI をチェックし、権限のないユーザーをブロックするモジュールを作成する

これならきっとできます。主な利点は、CPU とメモリの負荷に関して非常に軽量なソリューションになることですが、注意が必要な問題がいくつかあります。たとえば、http://example.com/node/nodenumberの形式の URL を介していつでもコンテンツにアクセスできるため、URL のエイリアスも確認する必要があります。しかし、ユーザーが偽の?何かを URL に追加する可能性があるという事実もあり、そのような場合を考慮して正規表現を作成する必要があります...

(また、mcrittenden によって与えられたrules モジュールのアイデアは良いものですが、彼の回答を読んだときだけ考えたので、言及しませんでした)。

お役に立てれば!

于 2009-11-16T16:42:56.810 に答える
0

役割とメニュー、または役割とメニュー ツリーの間のアクセスを関連付けることができるメニュー アクセスを調査することもできます。(Drupal では、「メニュー ルーター」テーブルは不思議なことに単なる UI ではなく、すべてのコンテンツを URL に接続するトラフィック ルーターでもあることに注意してください。)

すべての項目がメニュー エントリに関連付けられているため、パス エイリアスが必ずしも普遍的ではないという問題はありません。Menu Blockなどのモジュールを使用して、本のナビゲーションを模倣することもできます。

このモジュールは、完全で推奨される状態にもかかわらず、アルファ版またはベータ版リリースに近づいているように見えるため、本番サイトでは注意してください。

于 2009-11-16T17:25:18.927 に答える