0

Cakephp 2.1 と Auth に問題があります。

私の AppControlles には、関数 getUserdetails() があります

if (($user = $this->Auth->user()) != null)
    {
      $this->loadModel('User');
      $tmp = $this->User->find('first',array(
          'conditions' => array('username' => $user['User']['username'], 
                       'password'=> $user['User']'password'],
                'active' => 1),
          'recursive' => -1));

      if(!isset($tmp['User']))
        return null;

      $this->_userDetails = $tmp['User'];
      $this->set('userDetails', $this->_userDetails);
    }
    else
      return null

ユーザーが最初にサインアップすると、 $this->Auth->user() が返されます

array(
    'User' => array(
        'password' => '*****',
        'username' => 'me',
        'remember_me' => '1'
    )
)

ここで、パスワードは md5 でエンコードされています。ログアウトして再度ログインすると、前の配列のパスワードがプレーンテキストで返されるため、User->find は false を返します。このための単一の関数を作成する方法はありますか? $this->Auth->user() からのパスワードが md5 かどうかを知るにはどうすればよいですか?

ありがとう

4

1 に答える 1

0

これを試して:

public function login() {
    //If a user is already logged in, redirect him
    if ($this->Session->read('Auth.User')) {
        //$this->Session->setFlash('You are logged in!');
        $this->redirect(array('controller' => 'showspage', 'action' => 'home'));
    }

    if ($this->request->is('post')) {
        $this->data['User']['password'] = AuthComponent::password($this->data['User']['password']);

        if ($this->Auth->login()) {
            $this->redirect($this->Auth->redirect());
        } else {
            $this->Session->setFlash('Wrong username or password');
            $this->redirect(array('controller' => 'showspage', 'action' => 'home'));
        }
    }
    $this->Session->setFlash('You aren't legged-in!');
    $this->redirect(array('controller' => 'showspage', 'action' => 'home'));
}

ユーザーに関するすべての情報はセッション内にあり、AuthComponent で見つけることができます。

Es: AuthComponent::user('ユーザー名');

于 2012-04-05T05:19:14.827 に答える