私はExtJSでフォームログインを作成し、JSONデータを送信してZend Framework内で認証を行います。問題は、どんなユーザー名とパスワードを入力しても、ログインは常に成功するということです。関連コードは次のとおりです。JSONログイン認証Zend Framework
JSONデータにユーザー名とパスワードを含むExt JSフォームの機能を送信します。
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
}
})
}
}
コントローラには、JSONデータを送受信するためのValidAction機能があり、認証処理を行います。
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にある、と変なふうに私はの$ this - >プロセス($ FORMDATA)へのvar_dumpないとfalseを返し、まだそれは常に場合機能、メッセージの成功に行きます。何か案は?感謝している人。
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です。私は変数$も変数$の変数をダンプし、成功...これは何らかの形で問題に関連していますか? –
とは言い難い。あなたのシステムがmysql_ *関数をサポートしていなかったという印象を受けました。エラー報告とそれ以上のvar_dumpsを実行して、何が通過するかどうかを調べ、入力値と比較します。 –