CakePHP 2.0 AuthComponent использует собственное имя столбца

как я могу использовать следующее. У меня есть столбцы в моей таблице 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 ответа

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

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

Из документов 2.0 Authentication.


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


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

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

licensed under cc by-sa 3.0 with attribution.