1

Cakephp で簡単な「ユーザー認証」を行おうとしています。クックブックにあるようにコードを書きましたが、ログイン機能が正しく動作しません。認証を行わず、すべてのユーザーがデータにアクセスまたは編集できるようにし、空のユーザー名とパスワードが提供された場合でもログインできます.Appcontroller.phpに次のコードを書きました.

<?php
class AppController extends Controller {

public $components = array(
        'Session',
        'Auth' => array(
         'loginRedirect' => array('controller' => 'users','action' => 'index'),
         'logoutRedirect' => array('controller' => 'users','action' => 'login')
        )
    );
   public function beforeFilter() {
       $this->layout = 'admin_layout';
       $this->Auth->allow('index','view'); 

        }

ユーザーコントローラー.php

    <?php

    App::uses('AppController', 'Controller');
    App::uses('AuthComponent', 'Controller/Component');

    class UsersController extends AppController {


        public function login() 
            {

                if($this->request->is('post')) {
                    if ($this->Auth->login()) {
                        if($this->Auth->login());
                       $this->redirect($this->Auth->redirect());
                    } else {
                        $this->Session->setFlash(__('Invalid username or password, try again'));
                    }

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

Login.ctp is as follows



 <?php echo $this->Html->css('login');?>
    <div class="logincontainer">

    <div class="loginform">
    <div class="img">
    </div>


    <?php echo $this->Form->create('User'); ?>
    <div id="input">
    <div id="username">
      <?php // echo $this->Form->input('username');?>

     <?php echo $this->Form->input('username',array('class'=>'name','placeholder'=>'username','label'=>false));?>
    </div>
    <div id="space">
    </div>
    <div id="password">
        <?php //     echo $this->Form->input('password');?> 
    <?php echo $this->Form->input('password',array('class'=>'name','placeholder'=>'password','label'=>false));?>
    </div>
        <div id="space1"></div>
    <?php echo $this->Form->end('Login'); ?>

        <div id="forgot">Forgot Password

            </div>
    </div>
        <?php // echo $this->Session->flash();?>
    </div>
    </div>

誰かが私が間違っている場所を案内してもらえますか..

4

1 に答える 1

0

ログインせずにインデックスアクションにリダイレクトすると思いますが、loginRedirectオプションがインデックスアクションであり、beforeFilterでこのアクションを許可しているため、ログインしていると思います

$this->Auth->allow('index','view');

追加してください:

debug($this->Auth->login());
debug($this->request->data);
die();

前:

if ($this->Auth->login()) {
    if($this->Auth->login());
    $this->redirect($this->Auth->redirect());
} else {
     $this->Session->setFlash(__('Invalid username or password, try again'));
}

デバッグの結果($this->Auth->login()); 間違ったユーザーまたはパスワードを入力した場合は false にする必要があります

于 2014-08-31T10:01:46.390 に答える