2016-08-24 110 views
0

我會看到這樣一個登錄,我根據文檔跟蹤了所有步驟,唯一的區別是我的登錄名是除了我的項目結構中的默認佈局之外的另一個雙關語我有些東西不驗證用戶cakephp 3

\程序\ SRC \ Tempalte \佈局\ default.thtml中public.ctp

以及在那裏我的佈局,現在的權威性組件

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 /Ø釜invá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; 

我不應該錯過更多的應該工作或什麼曾經做錯了,請幫助

回答

0

請檢查以下內容:在數據庫表

  1. password領域似乎太短:varchar(50)。它至少需要60個字符或更長的時間才能確保更全面的哈希值始終可用。
  2. 檢查是否用正確的散列器創建了用戶記錄。
  3. 確保您在您的AppController的initialize()方法內撥打$this->loadComponent('Auth')。例如: -

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

探測感謝您的解決方案改變我的字段中的字符數是問題 –