я использую компонент Auth на торт PHP, и этот компонент не работает - PullRequest
0 голосов
/ 26 октября 2011

Я использую компонент Auth на торт php, и этот компонент не работает.

моя таблица:

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(50) default NULL,
  `password` varchar(100) default NULL,
  `role` varchar(50) default 'www',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

и мой UsersController:

class UsersController extends AppController {

    var $name = 'Users';
    var $helpers = array('Session');
    var $components = array('Session', 'Auth');

    function beforeFilter() {
        $this->Auth->login($this->data);
        $this->set('aya',$this->data);
        $this->Auth->loginAction= array ('controller'=>'users','action'=>'login');
        $this->Auth->loginRedirect = array ('controller'=>'users','actions'=>'edit','1');
        $this->Auth->deny('delete');
    }

    function login() {
    }

    function logout() {
    $this->redirect($this->Auth->logout());
    }

и мой файл login.ctp:

if($session->check('Message.auth'))
        $session->flash('auth');
echo $form->create('User', array ('action','login'));
echo $form->input('usrname');
echo $form->input('password', array ('type','password'));
echo $form->end('Login');

но это не работает

почему?спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 26 октября 2011
  • beforeFilter () будет вызываться при каждом запросе. И $ this-> data будет содержать данные POST этого запроса, а не только информацию для входа. Это то, что вы хотите?

  • Вы устанавливаете loginRedirect для удаления ??

  • echo $form->create('User', array ('action'=>'login')); echo $form->input('username'); echo $form->input('password', array ('type'=>'password'));

Я не знаю точно, чего вы хотите достичь, поэтому я не могу сказать вам, как написать код. Прочитайте инструкцию: http://book.cakephp.org/view/1250/Authentication

0 голосов
/ 26 октября 2011

вы можете определить, не работает? это выдает ошибку? ничего не делает?

Я думаю, что поскольку вы добавляете компонент auth только в пользовательский контроллер, а не в appController, это заставит компонент работать ТОЛЬКО в действиях пользователя. А так как у вас есть только вход и выход в UsersController, и эти функции разрешены, тогда компонент ничего не сделает, просто заставит ваших пользователей / логин работать автоматически ...

Я предлагаю вам переместить это

var $components = array('Session', 'Auth');

function beforeFilter() {
    $this->Auth->login($this->data);
    $this->set('aya',$this->data);
    $this->Auth->loginAction= array ('controller'=>'users','action'=>'login');
    $this->Auth->loginRedirect = array ('controller'=>'users','actions'=>'delete');
    $this->Auth->deny('delete');
}

на ваш AppController, и он должен работать

EDIT:

При повторном чтении вашего кода я вижу много ошибок:

  1. $this->Auth->login($this->data); Вы не должны использовать это, прочитайте руководство, то есть для РУЧНОГО входа в систему, обычно основанного на ajax, при каждом входе вы будете получать любые почтовые данные и выполнять вход для всех действий ... поэтому удалите эту строку
  2. $this->Auth->loginRedirect = array ('controller'=>'users','actions'=>'delete'); отправляете ли вы пользователей после входа в систему для удаления? предложение: попробуйте использовать индекс или что-то еще.
  3. $this->Auth->deny('delete');, если вы не поместите его в allowActions или не разрешите использовать ('delete') до того, как уже будет отказано ... удалите эту строку, так как это необходимо, все будет запрещено, если не указано иное

Пожалуйста, прочитайте этот урок , чтобы вы знали, что вам не хватает и что у вас есть дополнительно. это ДОЛЖНО работать так: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...