CakePHP 2.0 AuthComponent использует собственное имя столбца - PullRequest
0 голосов
/ 22 ноября 2011

как я могу использовать следующее. у меня есть столбцы в моей таблице wf_users: wf_username, wf_password теперь в моей форме я не хочу, чтобы кто-нибудь видел мою структуру таблицы, поэтому я использую в своей форме

$this->Form->input("username")­;
, а не
$this->Form->input("wf_username")­;
мой пост выглядит так

User=>array( 'username', 'password' );

теперь мне нужно, чтобы они перешли в мой именованный столбец или чтобы выполнить трюк, чтобы войти в разрешенную область, потому что он пытается получить неправильный столбец (с "username", а не с "wf_usernam").

Мой AppController:

class AppController extends Controller {

    public $viewClass = 'Theme';

    public $theme;

    public $components = array(
                            'Auth'=> array(
                                'loginRedirect'=>array('controller'=>'users', 'action'=>'dashboard'),
                                'logoutRedirect'=>array('controller'=>'users', 'action'=>'dashboard'),
                                'authError'=>'yout can´t access the page!',
                                'authorise'=>array('Controller'),
                                #'authenticate' => array(
                                #   'Form' => array(
                                #       'fields' => array(
                                #           'wf_auth_user_username' => 'username',
                                #           'wf_auth_user_password' => 'password'
                                #       )
                                #   )
                                #)
                            ),
                            'Session'
                         );

    //Before mainlayout
    public function beforeFilter() {
        parent::beforeFilter();
        $this->theme = 'SM';
        $this->Auth->fields = array('username'=>'wf_auth_user_username','password'=>'wf_auth_user_password');
        //Configure AuthComponent
        $this->Auth->allow('*');
        //Logged in user
        $this->set('isauth', 'loggedout'); //$this->userpanelAuth());
    }

    public function isAuthorized($user) {
        return true;
    }

    protected function userpanelAuth() {
        if($this->isAuthorized()) {
            return 'loggedin';  
        }else{
            return 'loggedout';
        }
    }

}

А это моя форма:

                            <div id="display-panel">
                                <?
echo $this->Session->flash();

                                        echo $this->Form->create('User', array('action' => 'login'));
                                        echo $this->Form->input(
                                            'username', 
                                                array('label'=>false, 'div'=>false,'placeholder'=>'Benutzername',''));
                                        echo $this->Form->input(
                                            'password', 
                                                array('label'=>false, 'div'=>false,'placeholder'=>'Passwort'));

                                        echo $this->Form->end(array('label'=>'login','div'=>false));
                                ?>
                            </div>

Ответы [ 3 ]

3 голосов
/ 22 ноября 2011

Компонент Auth позволяет указывать различные поля при настройке конфигурации. В этом случае вы используете обработчик аутентификации Form, который имеет ключ fields.

<?php
// Pass settings in $components array
public $components = array(
    'Auth'=> array(
        'authenticate' => array(
            'Form' => array(
                'fields' => array('username' => 'email')
            )
        )
    )
);

Из документов аутентификации 2.0 .

0 голосов
/ 04 ноября 2014

Вам не нужно использовать имена этих столбцов, wf_.Придерживайтесь соглашения и прекратите тратить время.

0 голосов
/ 22 ноября 2011

Когда вы устанавливаете все настройки Auth (обычно в обратном вызове beforeFilter), просто установите свойство fields

$this->Auth->fields = array('username' => 'wf_username', 'password' => 'wf_password');
...