我的身份验证失败,当我尝试 getDbSelect() 时,我什么也没得到……我做错了什么?
类 AuthController 扩展 Zend_Controller_Action
{
受保护的 $auth;
公共函数初始化()
{
$db = $this->getInvokeArg("bootstrap")->getResource("db");
$this->auth = new Zend_Auth_Adapter_DbTable($db, 'users', 'username', 'password', 'md5(?)');
}
公共函数 loginAction()
{
if (isset($_POST["username"])) {
$result = $this->auth
->setIdentity($this->getRequest()->getParam('username'))
->setCredential($this->getRequest()->getParam('password'));
回声“>”。$this->auth->getDbSelect();die();
$result = $this->auth
->setIdentity($this->getRequest()->getParam('username'))
->setCredential($this->getRequest()->getParam('password'))
->认证();
if ($result->isValid()) {
$this->_redirect("postLogin");
}
}
}
更新1:
我也尝试过不使用 MVC 和我更熟悉的 MySQL:
// 设置自动加载
require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();
//设置数据库连接
$db = 新 Zend_Db_Adapter_Pdo_Mysql(array(
'主机' => '127.0.0.1',
'用户名' => 'root',
'密码' => '',
'dbname' => 'learnZendAuth'
));
// 创建认证适配器
$auth = new Zend_Auth_Adapter_DbTable($db, 'users', 'username', 'password', 'md5(?)');
// 如果请求已发布,则进行登录
if (isset($_POST) && !empty($_POST)) {
// 进行身份验证
$result = $auth->setIdentity($_POST['username'])
->setCredential($_POST['password'])
->认证();
// 检查身份验证是否有效
if ($result->isValid()) {
// 登录成功
echo "成功登录为:" . $result->getIdentity();
} 别的 {
// 登录失败
回声“";
print_r($result->getMessages());
回声“";
}
} 别的 {
// 请求未发布
// 查看是否已经登录
if (Zend_Auth::getInstance()->hasIdentity()) {
echo "已经登录为:" . Zend_Auth::getInstance()->getIdentity();
}
}
我明白了
致命错误:未捕获的异常 'Zend_Auth_Adapter_Exception' 带有消息“提供给 Zend_Auth_Adapter_DbTable 的参数未能生成有效的 sql 语句,请检查表名和列名的有效性。” 在 C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Auth\Adapter\DbTable.php:414 堆栈跟踪:#0 C:\Program Files (x86)\Zend\ZendServer\share \ZendFramework\library\Zend\Auth\Adapter\DbTable.php(306): Zend_Auth_Adapter_DbTable->_authenticateQuerySelect(Object(Zend_Db_Select))
1 C:\Program Files (x86)\Zend\Apache2\htdocs\learnZf\index.php(23):
Zend_Auth_Adapter_DbTable->authenticate()
2 {main} 在 C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Auth\Adapter\DbTable.php 中抛出
在线 414