1

CakePHP 2 で AuthComponent を使用しています。

匿名ユーザーに「ホーム」ビューのみを表示し、「テスト」ビューを拒否したい。

両方のビューは Views/Pages フォルダ内にあります

このコードを使用する場合:

public function beforeFilter(){
    parent::beforeFilter(); //calling parents before filter
    $this->Auth->allow('home'); //allowing home only for pages controller
}

私のPagesControllerでは、home.ctpを含むPagesControllerのどのページにもアクセスできません。

私が使用する場合:

$this->Auth->allow('display')

PagesController では、test.ctp を含む PagesController の任意のページにアクセスできます。

この問題を解決するにはどうすればよいですか?

PagesController 名 home() に新しいメソッドを作成しようとしました。しかし、成功せずに。

4

2 に答える 2

1

状況1:CakePHPのデフォルトの「表示」機能を利用したくない場合。

PagesControllerでhome()という名前の新しいメソッドを作成することに加えて、以下に示すようにファイルapp \ Config \ routers.phpのコードを変更して、他のメソッドではなくホームで機能するようにする必要があります。この新しいコードはすべてのクエリをリダイレクトしますページコントローラからhome.ctpへ。

//default code statement:
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
//New code
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'home'));

状況2:CakePHPのデフォルトの「表示」機能を維持したい場合

次に、訪問者がtest.ctpページにアクセスしているときに、表示機能にリダイレクトロジックを構築する必要があります。これも、@ChuckBurgessがリンクで回答しています。

于 2013-01-18T05:23:13.460 に答える
1

これがあなたにとって良い答えです。 Cakephp で特定のページを許可する

Auth->allow はメソッド用であることに注意してください。Display は、ページ コントローラーのメソッドです。ホームページは、表示に使用される変数と見なされます。そのため、Pages コントローラーでこれをプログラムで行う必要があります。

于 2013-01-17T21:42:18.963 に答える