1

この質問はばかげていると思う人もいるかもしれません。しかし、私は本当にすべてのグーグルを行って、cakephp のドキュメントを読んでいますが、cakephp の認証メカニズムについてはまだ理解できません。少しコードを試しましたが、まだ認証できません....

すべての適切なエントリに対する私のエラーは、無効なユーザー名とパスワードとしてエラーが発生しています。これが私のコードです

//login.tpl

<div class="users form">
<?php echo $this->Session->flash('auth'); ?>
<?php echo $this->Form->create('User'); ?>
<fieldset>
    <legend><?php echo __('Please enter your username and password'); ?></legend>
    <?php echo $this->Form->input('username');
    echo $this->Form->input('password');
?>
</fieldset>
<?php echo $this->Form->end(__('Login')); ?>
</div>

//コントローラーファイル

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

誰でも認証方法を教えてもらえますか、私はcakephpが初めてです

4

1 に答える 1

1

Cakephp は認証自体を処理しloginます。関数内にコードを記述する必要はありません。

app_controller.php

<?php
class AppController extends Controller
{
    var $components = array
    (
        'Auth',
        'Session',
        'RequestHandler',
        'Email'
    );

    var $helpers    = array
    (
        'Javascript',
        'Form',
        'Html',
        'Session'
    );

    function beforeFilter()
    {
        $this->Auth->autoRedirect = true;

        $this->Auth->authError = 'Sorry, you are not authorized to view that page.';
        $this->Auth->loginError = 'invalid username and password combination.';

        $this->Auth->loginAction = array
        (
            'controller' => 'users',
            'action' => 'login',
            'admin' => true
        );

        $this->Auth->logoutRedirect = array
        (
            'controller' => 'users',
            'action' => 'logout',
            'admin' => true
        );

        $this->Auth->loginRedirect = array
        (
            'controller' => 'users',
            'action' => 'dashboard',
            'admin' => true
        );

        $this->Auth->fields = array('username' => 'email', 'password' => 'password');
    }
?>

users_controller.php

<?php
class UsersController extends AppController
{
    var $name = 'Users';

    /*
        do not forget to add beforeFilter function and inside this function call parent beforeFilter function.
    */

    function beforeFilter()
    {
        parent::beforeFilter();
    }

    function admin_login()
    {

    }

    function admin_logout()
    {
        $this->Session->destroy();
        $this->Auth->logout();
        $this->Session->setFlash(__('Yor are now Logged out Successfully', true), 'default',array('class'=>'alert alert-success'));
        $this->redirect('/');
        exit;
    }
?>

これで完了です。

于 2013-01-23T06:33:17.900 に答える