2016-08-24 14 views
0

私は、私のログインが私のプロジェクト構造内にあるデフォルトのレイアウト以外の別のpunであるという唯一の違いをドキュメントに基づいてすべての手順に従ったログインが表示されます。user cakephpを検証しない3

\アプリ\ SRC \ Tempalte \レイアウト\ 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()?> 

負荷のすべてが、常に

が、これは私のテーブル

あるクラーベinválidoO /メッセージUsuario yを送信
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. $this->loadComponent('Auth')への呼び出しをAppControllerのinitialize()メソッドに入れてください。例えば:

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

おかげで、あなたのソリューションは、私のフィールド内の文字数がその問題だっ変更探ります –