0

サイトが安全で、すべての権限が正しく設定されていることを確認するために、特定のユーザーがアクセスできるすべてのページのリストを生成する方法を探しています。(つまり...特定のuidをuser_access()返すすべてのメニューコールバック)。TRUE

次のようになります。

$user->uid == 0

写真

お問い合わせ

$user->uid = 23

写真

お問い合わせ

フォーラム

ブログ

4

1 に答える 1

0

これは Drupal では現実的ではありません。システムの観点からは実際のページはなく、コールバック関数だけが引数を取るからです。明確にするために、ノード ページの標準的なパスを考えてみましょう。

node/[nid]

これは [nid] の任意の整数を受け入れ、node/%パスのコールバック関数が一致する ID を持つノードを見つけようとします。ページが実際に存在するかどうかを Drupal が「認識する」のは、それを探した後でのみです。

同じことが他のすべてのパスにも当てはまります。そのため、基本的に、パスが実際に「存在する」か 404 で終わるかどうかをテストする以外に、(ほぼ) 無制限の数の潜在的なページを見ていることになります。

あなたができるmenu_routerことは、テーブルを見ることです。そこには、コールバック関数と access_callback 関数とともに、登録されているすべてのパスがあります。ユーザーごとにチェックを行うこともできますが、パスがたくさんあり、多くのプレースホルダーが含まれているため、結果を解釈するのは困難です。

URL-Aliases/pathauto を使用する場合、同様のオプションが存在します。次に、url_aliasテーブルを取得して、そこにあるすべてのエントリをチェックできます。しかし、あなたは自分のサイトを保護することに関心があるので、エイリアスを持たないパスを見逃す可能性があるため、これは実際には役に立ちません。上記のように、これらは無数にあります。

于 2009-08-24T23:42:21.627 に答える