Php Zend Framework上的错误身份验证失败
我想知道怎么做 我有一个问题的登录表单,其中包含登录名和密码,我收到一个错误,无法识别Php Zend Framework上的错误身份验证失败,php,zend-framework,web,zend-db,Php,Zend Framework,Web,Zend Db,我想知道怎么做 我有一个问题的登录表单,其中包含登录名和密码,我收到一个错误,无法识别 class Admin_IndexController extends Zend_Controller_Action { private $_form; public function init() { $this->_helper->layout->setLayout('login'); $this-&g
class Admin_IndexController extends Zend_Controller_Action
{
private $_form;
public function init()
{
$this->_helper->layout->setLayout('login');
$this->_form = new Admin_Forms_IdentificationAdmin();
$this->view->form = $this->_form;
}
public function indexAction()
{
if($this->_request->isPost())
{
$formLoginAdmin = $this->getRequest()->getPost();
if($this->_form->isValid($formLoginAdmin))
{
if(empty($formLoginAdmin['loginAd']) || empty($formLoginAdmin['password']) )
{
echo json_encode(array(
'valid' => false,
'error' => "Erreur dans les identifiants"
));
exit();
}
/**
* User method static loginByEmail
*
*/
if(Admin_Models_UserTools::loginByEmail($formLoginAdmin['loginAd'], $formLoginAdmin['password']))
{
if(intval(Admin_Models_UserTools::getRankByEmailUser($formLoginAdmin['loginAd'])->rankUser) == Admin_Models_UserTools::LEVEL_ADMINISTRATOR
|| intval(Admin_Models_UserTools::getRankByEmailUser($formLoginAdmin['loginAd'])->rankUser) == Admin_Models_UserTools::LEVEL_SUPER_ADMINISTRATOR)
{
echo json_encode(array(
'valid' => true,
'redirect' => 'general'
));
exit();
}else{
echo json_encode(array(
'valid' => false,
'error' => "Vous n'avez pas les droits d'accès"
));
exit();
}
}
echo json_encode(array(
'valid' => false,
'error' => "Echec de l'identification"
));
exit();
}else{
echo json_encode(array(
'valid' => false,
'error' => "Le formulaire n'est pas valide"
));
exit();
}
}
}
请参见下面application.ini中的my code DB
; Base de donnée
resources.db.adapter = PDO_MYSQL
resources.db.params.charset = UTF8
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password =
resources.db.params.dbname = web_development
resources.db.isDefaultTableAdapter = true
对于管理员(Models)和用户工具(UserTools)
public static function loginByEmail($email, $password)
{
if(empty($email) || empty($password))
{
throw new Zend_Exception( self::ERROR_INVALID_FIELDS_USER );
}else{
$validator = new Zend_Validate_EmailAddress();
if(!$validator->isValid($email))
{
throw new Zend_Exception( ERROR_INVALID_EMAIL );
}
}
/**
* Get Instance dbAdapter
*/
$dbadapter = Zend_Db_Table::getDefaultAdapter();
/**
* Create e auth adapter
*/
$authAdapter = new Zend_Auth_Adapter_DbTable($dbadapter);
$authAdapter->setTableName(self::TABLE_USER)
->setIdentityColumn(self::ROW_EMAIL)
->setCredentialColumn(self::ROW_PASSWORD)
->setCredentialTreatment('SHA1(?)')
->setIdentity($email)
->setCredential($password);
/**
* Create an object "session"
*/
$auth = Zend_Auth::getInstance()->setStorage(new Zend_Auth_Storage_Session(self::getNamespaceSession(self::getRankByEmailUser($email))));
$result = $auth->authenticate($authAdapter);
if($result->isValid())
{
/**
* Create data user in session without passwordUser
*/
$dataUser = $authAdapter->getResultRowObject(null, self::ROW_PASSWORD);
$auth->getStorage()->write($dataUser);
$session = new Zend_Session_Namespace('config');
$session->emailAsk = $email;
return true;
}
return false;
}
所以在Mysql中我有两个字段:emailUser和passwordUser
const ROW_PASSWORD = 'passwordUser';
const ROW_EMAIL = 'emailUser';
public static function getSessionUser()
{
$sessionAsk = new Zend_Session_Namespace('config');
$emailAsk = $sessionAsk->emailAsk;
if(isset($emailAsk))
{
return Zend_Auth::getInstance()->
setStorage(
new Zend_Auth_Storage_Session(Admin_Models_UserTools::getNamespaceSession
(Admin_Models_UserTools::getRankByEmailUser($emailAsk))));
}
return false;
}
我不懂这个代码,我想这就是问题所在
<script type="text/javascript">
$(function(){
$('.deleteUser').click(function(){
var idU = $(this).attr('rel');
if(confirm("<?=$this->translate('Are you sure you delete this user');?> (id: "+idU+" ) ?")){
var data = {
listId : idU
};
$.ajax({
url: 'user-management/deleteuser',
dataType: 'json',
type: 'POST',
data: data,
success: function(data, textStatus, XMLHttpRequest)
{
if(data.response)
{
$('#listUser').removeBlockMessages().blockMessage(data.message, {type: 'success'});
upContent('userManagement/index/','');
}else{
$('#listUser').removeBlockMessages().blockMessage(data.errorMessage, {type: 'error'});
}
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
// Message
$('#listUser').removeBlockMessages().blockMessage('<?=$this->translate('Connection to server failed, please try again');?>' + '<br/>', {type: 'error'});
}
});
}
});
$(函数(){
$('.deleteUser')。单击(函数(){
var idU=$(this.attr('rel');
如果(确认(“(id:+idU+”)){
风险值数据={
列表ID:idU
};
$.ajax({
url:“用户管理/deleteuser”,
数据类型:“json”,
键入:“POST”,
数据:数据,
成功:函数(数据、textStatus、XMLHttpRequest)
{
if(data.response)
{
$('#listUser').removeBlockMessages().blockMessage(data.message,{type:'success'});
upContent('userManagement/index/','');
}否则{
$('#listUser').removeBlockMessages().blockMessage(data.errorMessage,{type:'error'});
}
},
错误:函数(XMLHttpRequest、textStatus、errorshown)
{
//信息
$('#listUser').removeBlockMessages().BlockMessages(''+'
',{type:'error'});
}
});
}
});
我使用firebug进行调试,我在帖子中给出了以下答案:
<!-- example login script -->
<script type="text/javascript">
$(document).ready(function()
{
// We'll catch form submission to do it in AJAX, but this works also with JS disabled
$('#login-form').submit(function(event)
{
// Stop full page load
event.preventDefault();
// Check fields
var login = $('#login').val();
var pass = $('#password').val();
if (!login || login.length == 0)
{
$('#login-block').removeBlockMessages().blockMessage('Veuillez entrer votre identifiant', {type: 'warning'});
}
else if (!pass || pass.length == 0)
{
$('#login-block').removeBlockMessages().blockMessage('Le mot de passe est obligatoire', {type: 'warning'});
}
else
{
var submitBt = $(this).find('button[type=submit]');
submitBt.disableBt();
// Request
var data = {
loginAd: login,
password: pass
};
var redirect = '/en/admin/general/';
if (redirect.length > 0)
// Start timer
var sendTimer = new Date().getTime();
// Send
$.ajax({
url: '/en/admin/',
dataType: 'json',
type: 'POST',
data: data,
success: function(data, textStatus, XMLHttpRequest)
{
if (data.valid)
{
document.location.href = '/en/admin/general/';
}
else
{
// Message
$('#login-block').removeBlockMessages().blockMessage(data.error || 'Il y a eu une erreur dans les identifiants, veuillez réessayer', {type: 'error'});
submitBt.enableBt();
}
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
// Message
$('#login-block').removeBlockMessages().blockMessage('Connexion au serveur échouée, veuillez réessayer <br/>', {type: 'error'});
submitBt.enableBt();
}
});
// Message
$('#login-block').removeBlockMessages().blockMessage('Identification en cours, veuillez patienter', {type: 'loading'});
}
});
});
</script>
$(文档).ready(函数()
{
//我们将捕获表单提交以在AJAX中完成它,但这也适用于禁用JS的情况
$(“#登录表单”).submit(函数(事件)
{
//停止整页加载
event.preventDefault();
//检查字段
var login=$('#login').val();
var pass=$('#password').val();
如果(!login | | login.length==0)
{
$(“#登录块”).removeBlockMessages().blockMessage('Veuillez Enter votre Identification',{type:'warning'});
}
如果(!pass | | pass.length==0),则为else
{
$(“#登录块”).removeBlockMessages().blockMessage('Le mot de passe est obligatoire',{type:'warning'});
}
其他的
{
var submitBt=$(this.find('button[type=submit]');
submitBt.disableBt();
//请求
变量数据={
登录:登录,
密码:pass
};
var redirect='/en/admin/general/';
如果(redirect.length>0)
//启动计时器
var sendTimer=new Date().getTime();
//发送
$.ajax({
url:“/en/admin/”,
数据类型:“json”,
键入:“POST”,
数据:数据,
成功:函数(数据、textStatus、XMLHttpRequest)
{
if(data.valid)
{
document.location.href='/en/admin/general/';
}
其他的
{
//信息
$(“#登录块”).removeBlockMessages().blockMessage(data.error | |'Il y a eu une erreur dans les identifications,veuillez réessayer',{type:'error'});
submitBt.enableBt();
}
},
错误:函数(XMLHttpRequest、textStatus、errorshown)
{
//信息
$(“#登录块”).removeBlockMessages().blockMessage('Connexion au serveuréchouée,veuillez réessayer
,{type:'error'});
submitBt.enableBt();
}
});
//信息
$(“#登录块”).removeBlockMessages().blockMessage('Identification en cours,veuillez patienter',{type:'loading'});
}
});
});
我也有这个错误
韦耶勒·雷塞尔服务关系
感谢您的大力帮助Admin\u Models\u UserTools::LoginByMail($formLoginAdmin['loginAd',$formLoginAdmin['password'])失败感谢您@Mattgerry我更新了我的帖子您能看到我的函数LoginByMail吗提前感谢我认为您的密码没有正确加密(您是否正确使用了salt?),或者可能是设置存储行出了问题。每个列组的名称空间不同?我不确定,但这可能是问题所在。我看不出其他任何错误。我使用的密码是:d033e22ae348aeb5660fc2140aec35850c4da997,我在daba base中有,这封电子邮件也有admin@webe.com,谢谢你的帮助,我能做什么你是在什么时候想出这个密码的?你是刚刚输入了这个密码,还是用了盐?