Я создаю логин формы с помощью ExtJS и отправляю данные JSON для аутентификации в Zend Framework. Проблема в том, что независимо от того, какое имя пользователя и пароль я заполняю, логин всегда преуспевает. Вот связанный код:JSON Login Authentification Zend Framework
Отправить функцию для Ext JS Form, где мы отправляем данные JSON, содержали имя пользователя и пароль.
var doLogin = function() {
if (formPanel.getForm().isValid()) {
formPanel.getForm().submit({
method: 'POST',
url: '/zend/public/auth/valid',
waitMsg: 'Processing Request',
success: function (form, action) {
document.location = '/zend/public/guestbook';
},
failure: function (form, action) {
if (action.failureType = 'server') {
obj = Ext.util.JSON.decode(action.response.responseText);
Ext.Msg.alert('Login Failed', obj.errors.reason);
} else {
Ext.Msg.alert('Warning!', 'Authentification server is uneachable : ' + action.response.responseText);
}
formPanel.getForm().reset
}
})
}
}
Контроллер, мы имеем функцию ValidAction получать и отправлять данные в формате JSON, и процесс, чтобы сделать аутентификацию.
public function validAction()
{
if(!isset($this->session->isLogin)){
$username = mysql_escape_string($_POST['username']);
$password = mysql_escape_string($_POST['password']);
$formdata = array('username'=>$username, 'password'=>$password);
if ($this->_process($formdata)) {
$this->session->setExpirationSeconds(3600);
$msg = '{success:true, result:{message:\'Welcome, '.$username.'!\'}}';
} else {
$msg = '{success:false, errors:{reason:\'Login failed, try again.\'}}';
}
}
protected function _process($values) {
// Get our authentication adapter and check credentials
$adapter = $this->_getAuthAdapter();
$adapter->setIdentity($values['username']);
$adapter->setCredential($values['password']);
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($adapter);
if ($result->isValid()) {
$user = $adapter->getResultRowObject();
$auth->getStorage()->write($user);
return true;
}
return false;
}
Проблема заключается в validAction, и удачливый я var_dump до $ this-> процесс ($ FormData) и возвращает ложь, но она всегда идет к тому, если функция, сообщение об успехе. Есть идеи? Оцененные ребята.
UPDATE:
var_dump:
Uncaught Error: You're trying to decode an invalid JSON String:
array(2) {
["username"]=>
string(2) "ad"
["password"]=>
string(4) "pass"
}
bool(false)
string(59) "{success:false, errors:{reason:'Login failed, try again.'}}"
какая версия php вы используете? Мне просто интересно узнать, поддерживает ли ваша система функцию 'mysql_'. –
Да, это php 5. Я var сбрасывал $ username и переменную $ password тоже и преуспел ... Это как-то связано с проблемой? –
трудно сказать. У меня создалось впечатление, что ваша система не поддерживает функции 'mysql_ * '. запускать отчет об ошибках и многое другое var_dumps, чтобы увидеть, что происходит или нет, и сравнить с введенными значениями. –