2011-01-14 20 views
0

私は、各ユーザーに見える内容のプライベートホームページを提供するサイトを構築しています。 _menuハンドラ内のコールバックは、ユーザがページの所有者であればアクセスを許可し、そうでなければそれを拒否します。すべてがうまくいきます。Drupal:アクセスが拒否されましたが、とにかくコンテンツが取得されます

私はそのコンテンツが大きなコードの袋の代わりに箱のセットで構成されるようにそのページを改訂しました。内容は正しくまとまっていますが、問題があります。ユーザーAがユーザーBのプライベートページを見た場合、アクセス拒否ページが表示されます。しかし、ブロックは依然として呼び出され、その内容はページ上で終了し、ユーザーAはユーザーBのプライベートなものを見ることができます。このページには、通常の「このページにアクセスする権限がありません」というメッセージも表示されません。アクセス拒否のページに表示されるメッセージです。

なぜこのようなことが起こっているのかを理解するには全然迷っています。私はブロックを適切に設計された「特定のページにブロックを表示する」機能を与えてブロックを維持することができますが、(a)右のようには見えず、(b)私は理解しません。これにより、サイトのアクセス制御に関して何が起こっているかについて、特にブロックに関連する方法と同様に、悪い/面白い気持ちになります。誰もがここで何の洞察力を提供できますか?ありがとう!

答えて

0

アクセスチェックを行うには、フックメニューでアクセスコールバック関数を作成する必要があります。それ以外の場合、ユーザーは何も表示しなくてもコンテンツを見ることができます。ブロックはメニューコールバックによって作成されないため、通常はレンダリングされます。参考のため

、以下を参照してくださいhook_menu

+0

を私がやっているだけのものだ - 私のモジュールの_menuハンドラ内のページのエントリは、ユーザーのuidを渡さ_access_canEditUserPageの「アクセスコールバックが」(から抽出しましたページのURL、および 'access arguments' - > array(1)を介して渡されます)。 _access_canEditUserPageは、ユーザーがページを表示することを許可されていることを確認し、それに応じてtrueまたはfalseを返します。これはアクセス拒否の原因となっているので、ブロックコンテンツが引き続き表示されるのは混乱しています。 FWIW、Apacheのログは、ページリクエストが403エラーコードで応答されたことを確認します。 –

関連する問題