Компонент CakePHP Auth не хеширует пароль при входе - PullRequest
1 голос
/ 17 января 2012

Я не совсем уверен, что здесь происходит. Это то, что у меня есть в моем app_controller.php:

<?php

class AppController extends Controller {

var $components = array('Auth');
var $helpers = array('Form', 'Session');

function beforeFilter() {

    $this->Auth->allow('register');
    $this->Auth->userScope = array('User.activated' => true);
    $this->Auth->loginError = "<span style=\"color:#FF0000\">Wrong username or password</span>";
    $this->Auth->fields = array(            
        'username' => 'username',             
        'password' => 'password'
    );
    }
}

?>

и мой users_controller.php:

<?php

class UsersController extends AppController {

var $name = 'Users';
var $components = array('Auth');
var $helpers = array('Form', 'Session');

function index() {



}

function login() {

    $this->set('title_for_layout', "Welcome to .com!");
    $this->layout = 'user_functions';

}

function logout() {

    $this->redirect($this->Auth->logout());

}

function register(){

    $this->set('title_for_layout', "Register Here!");
    $this->layout = 'user_functions';
    $date = date('Y');

    if (!empty($this->data)) {
        $user_check = $this->User->find('first', array('conditions' => array('username' => $this->data['User']['username'])));
        $email_check = $this->User->find('first', array('conditions' => array('e-mail' => $this->data['User']['e-mail'])));
        if (empty($user_check)) {
            if(empty($email_check)){
                if ($this->User->save($this->data)) {
                    $uuid_string = $this->data['User']['activation_hash'];
                    $email = //email
                    $to = $this->data['User']['e-mail'];
                    $subject = 'Welcome to .com!';
                    $headers = "MIME-Version: 1.0" . "\r\n";
                    $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
                    $headers .= 'From: '';

                    if (mail($to, $subject, $email, $headers)) {
                        $this->redirect('/');
                    }
                } else {
                    //$this->Session->setFlash('<p class="register_flash">Something went wrong. Please try again.</p>', 'flash_registration');
                    //$this->flash('', '/');
                }
            } else {

                //email exists

            }
        } else {

            //username exists

        }
    }   
}
}





?>

и вот мой взгляд:

<code><div id="login">
<p>Please log in! <a id="register" href="register" alt="Register">Register</a></p>
<hr class="login"/>
<?php    
    echo $this->Session->flash('auth');    
    echo $this->Form->create('User');    
    echo $this->Form->input('username');
    echo $this->Form->input('password');
    echo "<hr class=\"login\"/>";
    echo $this->Form->end('Login');
    echo $this->Session->flash('flash_registration');
    echo "<pre>"; print_r($this->data); echo "
"; ?>

Обычно, когда я пытаюсь войти в систему, используя мою форму входа, даже если я использую пароль, который я использовал при регистрации, он говорит, что имя пользователя или пароль неверны. Однако, когда я изменил пароль, хранящийся в базе данных, на «пароль» в виде обычного текста и попытался войти в систему, это сработало! Я понятия не имею, почему это происходит. Я также повторил данные $ this-> в представлении входа в систему, и имя пользователя верно, но пароль пуст. Из того, что я вижу, пароль просто не хэшируется.

1 Ответ

0 голосов
/ 17 января 2012

РЕДАКТИРОВАТЬ

Я думаю, что вы имеете в виду маску, а не хэш, пароль во время ввода.Это должно быть просто ...

echo $this->Form->input('password', array('type' => 'password'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...