不验证用户cakephp 3

时间:2016-08-24 22:20:34

标签: php cakephp cakephp-3.0

我会看到这样的登录,我按照文档执行了所有步骤,唯一的区别是我的登录是另一个双关语,而不是我项目结构中的默认布局我有一些东西

  

\ app \ src \ Tempalte \ layout \ default.ctp public.ctp

那么我的布局现在是auth组件

class AppController extends Controller {
$this->loadComponent('Auth',[
    'authorize' => ['Controller'],
    'authenticate' => [
        'Form' => [
            'userModel' => 'Usuarios',
            'fields' => [
                'username' => 'usuario',
                'password' => 'password'
            ]
        ]
    ],
    'loginAction' => [
        'controller' => 'Usuarios',
        'action' => 'login'
    ],
    'authError' => 'Ingrese Datos',
    'loginRedirect' => [
        'controller' => 'Portal',
        'action' => 'dashboard'
       ],
   ]);
 }

我的控制器用户

public function login() {
if ($this->request->is('post')) {
    $user = $this->Auth->identify();
    if ($user) {
        $this->Auth->setUser($user);
        return $this->redirect($this->Auth->redirectUrl());
    }  else {
        $this->Flash->error('Usuario y/o clave inválido',['key' => 'auth']);
    }
  }
   $this->viewBuilder()->layout('public');
}

我的布局公众将成为我的登录

<?= $this->Flash->render('auth') ?>
                    <?= $this->Form->create() ?>
                    <div class="form-group">
                        <div class="input-group">
                            <i class="input-group-addon icon-user"></i>
                            <?= $this->Form->text('usuario',['placeholder' => 'Usuario','class'=>'form-control']) ?>
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="input-group">
                            <i class="input-group-addon icon-key"></i>
                            <?= $this->Form->password('password',['placeholder' => 'Contraseña','class'=>'form-control']) ?>
                        </div>
                    </div>
                    <div class="form-group">
                        <?= $this->Html->link('Olvidaste tu Contraseña','/usuarios/password');?>
                        <?= $this->Form->button('Ingresar',['class'=>'btn btn-inverse btn-right'])?>
                    </div>
                    <?= $this->Form->end()?>

加载所有内容,但始终发送消息Usuario y / oclaveinválido

这是我的表

CREATE TABLE IF NOT EXISTS `usuario` (
 `id_usuario` int(11) NOT NULL,
 `usuario` varchar(50) DEFAULT NULL,
   `password` varchar(50) DEFAULT NULL,
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

我不应该错过更多应该工作或任何做错的事情请帮助

1 个答案:

答案 0 :(得分:0)

请检查以下内容:

  1. 数据库表中的password字段似乎太短:varchar(50)。它需要至少60个字符或更长255才能确保更全面的哈希值始终有效。
  2. 检查是否已使用正确的哈希创建了用户记录。
  3. 确保在AppController的$this->loadComponent('Auth')方法中调用initialize()。 E.g:

    class AppController extends Controller {
        public function initialize()
        {
            parent::initialize();
            $this->loadComponent('Auth', [...]);
        }
    }