0

私はCakePHPACLチュートリアル http://book.cakephp.org/2.0/en/tutorials-and-examples/simple-acl-driven-application/simple-acl-driven-application.htmlに従っています

基本的にユーザーがアップロードされたすべての画像を一覧表示できるImagesControllerというコントローラーがあります。画像の「アップロード」や「削除」などのアクションもあります。

ログインおよびログアウト機能を備えたUserControllerもあります。

私のAppController.phpは次のようになります

  1 <?php
  2 
  3 class AppController extends Controller {
  4     public $components = array(
  5             'Acl',
  6             'Auth' => array(
  7                 'authorize' => array(
  8                     'Actions' => array('actionPath' => 'controllers')
  9                     )
 10                 ),
 11             'Session'
 12             );
 13     public $helpers = array('Html', 'Form', 'Session');
 14 
 15     public function beforeFilter() {
 16  //       $this->Auth->actionPath = 'controllers/';
 17         //Configure AuthComponent
 18         $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
 19         $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
 20         $this->Auth->loginRedirect = array('controller' => 'images', 'action' => 'index');
 21         $this->Auth->allow('display');
 22  //       $this->Auth->allow('*');
 23     }
 24 }
 25 
 26 
 27 ?>
~             

私のUsersController.phpは次のようになります

<?php
  2 App::uses('AppController', 'Controller');
  3 /**
  4  * Users Controller
  5  *
  6  * @property User $User
  7  */
  8 class UsersController extends AppController {
 30     public function beforeFilter() {
 31         parent::beforeFilter();
 32         //$this->Auth->allow("initDB"); // remove this later
 33         $this->Auth->allow('login', 'logout');
 34     }
 35     public function login() {
 36         if ($this->Session->read('Auth.User')) {
 37             $this->Session->setFlash('You are logged in!');
 38             $this->redirect('/', null, false);
 39         }
 40     }
 41     public function logout() {
 42         //Leave empty for now.
 43         $this->Session->setFlash('Good-Bye');
 44         $this->redirect($this->Auth->logout());
 45     }
}

したがって、アップロードや削除などの画像/インデックスのアクションをクリックすると、ユーザー/ログインページに移動しますが、ログインしようとしても、リダイレクトが20行目の画像/インデックスを指していても何も起こりません。 。何が得られますか?

4

1 に答える 1

1

Cake 1.3とは異なり、Cake 2では、ログインは自動的に行われません。これは、$this->Auth->login()明示的に呼び出す必要があることを意味します。

チュートリアルのlogin()アクションを見てください。これまでのところ、ログインを実行することはありません。これが、リダイレクトされない理由を説明しています。

于 2012-05-09T21:09:27.400 に答える