cakephp: $ this-> Auth-> user () логин не работает на рабочем сервере? - PullRequest
1 голос
/ 30 января 2012

У меня проблема с компонентом Auth на рабочем сервере.Когда я ввожу имя пользователя и пароль и нажимаю на кнопку «Войти», ничего не происходит, кроме того, что текстовое поле пароля само очищается.Я получаю сообщение «Я в системе loginFailure».Я понятия не имею, почему он вообще не входит в 'if ($ this-> Auth-> user ())'.

Ранее на моем сервере разработки этот компонент Auth работал прекрасно.Мне удалось войти в систему, и как только пользователь войдет в систему, будет отображен pdf-файл табеля успеваемости для его / ее ребенка.

Кто-нибудь может указать, какую ошибку я совершаю?Спасибо.

merry_parents_controller.php

class MerryParentsController extends AppController{

var $name='MerryParents';
function beforeFilter(){
    parent::beforeFilter();
    $this->Auth->autoRedirect=false;
                        //$this->redirect($this->Auth->redirect());
}

function login(){
    echo "i'm in login";
    if ($this->Auth->user()){
        debug($this->Auth->user());
        $this->data=$this->Auth->user();
        if (!empty($this->data)){

                    $student_info=$this->MerryParent->Student->getStudents($this->data['MerryParent']['id']);
                    $this->set('student_info',$student_info);
                    print_r($student_info); 
                    $this->redirect(array('controller'=>'aptitudes','action'=>'viewpdf',$student_info['Student']['id']));
                    //$this->render('/aptitudes/viewpdf');  
            }
        else{
            echo 'Auth user has not been set';
            }

    }
    else
        echo "Failure";

}
}

login.ctp

<?php
//var_dump($this->data);
$this->Session->flash('auth');
echo $this->Form->create('MerryParent',array('action'=>'login'));
echo $this->Form->input('MerryParent.username',array('label'=>'Name'));
echo $this->Form->input('MerryParent.password', array('value'=>''));
echo $this->Form->end('Login');
?>

app_controller.php

class AppController extends Controller {
var $components=array('Auth','Session','Cookie','Email','Security','RequestHandler','Cookie');
var $helpers = array('Html','Form','Ajax','Javascript','Session');

function beforeFilter(){
  if (isset($this->Auth)){
        $this->Auth->userModel='MerryParent';
        $this->Auth->loginAction=array('controller'=>'merry_parents','action'=>'login');
                    /*var_dump($this->data);
                    debug($this->Auth->user);*/
        $this->Auth->allow('*');
        $this->Auth->loginRedirect=array('controller'=>'aptitudes','action'=>'viewpdf');
        $this->Auth->logoutRedirect=array('controller'=>'merry_parents','action'=>'register');
        $this->Auth->authorize='controller';
      }
   else
        $this->Session->setFlash('Auth has not been set');  

}

function isAuthorized(){
    return true;
}

Ответы [ 4 ]

2 голосов
/ 30 января 2012

попробуйте это:

<?php
//var_dump($this->data);
$this->Session->flash('auth');
echo $this->Form->create('MerryParent',array('action'=>'login'));
echo $this->Form->input('username',array('label'=>'Name'));
echo $this->Form->input('password', array('value'=>''));
echo $this->Form->end('Login');
?>

попробуйте эту функцию входа в систему:

function login(){
    echo "i'm in login";
    if (!empty($this->data)){
        if($this->Auth->login($this->data)) {
            debug($this->Auth->user());
            $this->data=$this->Auth->user();
            if (!empty($this->data)){
                $student_info=$this->MerryParent->Student->getStudents($this->data['MerryParent']['id']);
                $this->set('student_info',$student_info);
                print_r($student_info); 
                $this->redirect(array('controller'=>'aptitudes','action'=>'viewpdf',$student_info['Student']['id']));
                //$this->render('/aptitudes/viewpdf');  
            } else {
                echo 'Auth user has not been set';
            }
        }
    } else echo "Failure";
}
1 голос
/ 28 июня 2014

Удалите лишний пробел в последней строке контроллера или используйте другой php-файл, такой как «config», «components» и «helpers»

<? Php?> <Удалить пробел>

1 голос
/ 31 января 2012

Было 2 проблемы.После того, как я изменил функцию входа в систему в соответствии с ответом CodeParadox, она все еще не работала, пока я не изменил core.sphs Security.salt и Security.cipherSeed.Я просто скопировал значения для salt и cipherSeed из core.php моего сервера разработки, и это сработало!:)

спасибо.

0 голосов
/ 28 марта 2015

ваш Author.authorize Controller должен иметь заглавную букву, как показано ниже:

$this->Auth->authorize='Controller';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...