何も起こっていないように見える理由は、Acl コンポーネントがビューに生成するフラッシュ メッセージを表示しないためです (Dave がコメントで既に述べたように)。これをレイアウトまたはビューに追加する必要があります。
echo $this->Session->flash('auth');
authError
そうすれば、ユーザーは、のプロパティで設定したメッセージを見ることができますAuthComponent
。
もう 1 つの方法は、次のように、AppController の beforeFilter メソッドで ACL チェックを実行し、Acl チェックが失敗した場合にユーザーをリダイレクトすることです。
/**
* ACL Check (CakeError controller is exempt from this example,
* so errors are always "allowed" to be shown).
*/
if (!is_null($this->Auth->User()) && $this->name != 'CakeError'
&& !$this->Acl->check(array(
'model' => 'User',
'foreign_key' => AuthComponent::user('id')),
$this->name . '/' . $this->request->params['action']
)) {
// Optionally log an ACL deny message in auth.log
CakeLog::write('auth', 'ACL DENY: ' . AuthComponent::user('username') .
' tried to access ' . $this->name . '/' .
$this->request->params['action'] . '.'
);
// Render the forbidden page instead of the current requested page
echo $this->render('/Pages/forbidden');
/**
* Make sure we halt here, otherwise the forbidden message
* is just shown above the content.
*/
exit;
}
そうapp/View/Pages/forbidden.ctp
すれば、ファイルがレンダリングされ、exit ステートメントによってリダイレクトが発生しなくなります。