Php Acl不工作获取ID为空的错误
我有一个Acl,我正试图在我的网站上实现,它是数据库驱动的。我在这里使用了这个代码。我使用的是一个基于模块的结构,而这个例子恰好不是。所以我把所有应该放在应用程序模型中的东西都放在核心模块模型中。此脚本对查看站点的所有人进行身份验证,如果他们没有帐户,则会将其作为来宾登录。我的问题是它将用户身份验证为Guest,但是我在映射器getbyId上得到一个错误,它将用户id设置为1(Guest),为什么它返回并出错?我使用的是基于模块的结构吗 我试着在网站上发帖,但还没有得到答案,它是前一段时间开发的——博客可能已经死了 谢谢你的帮助! 美国东部时间5月2日6:44更新: 我认为我的问题在于:Php Acl不工作获取ID为空的错误,php,zend-framework,authentication,acl,Php,Zend Framework,Authentication,Acl,我有一个Acl,我正试图在我的网站上实现,它是数据库驱动的。我在这里使用了这个代码。我使用的是一个基于模块的结构,而这个例子恰好不是。所以我把所有应该放在应用程序模型中的东西都放在核心模块模型中。此脚本对查看站点的所有人进行身份验证,如果他们没有帐户,则会将其作为来宾登录。我的问题是它将用户身份验证为Guest,但是我在映射器getbyId上得到一个错误,它将用户id设置为1(Guest),为什么它返回并出错?我使用的是基于模块的结构吗 我试着在网站上发帖,但还没有得到答案,它是前一段时间开发的
private static function getAuthAdapter($loginField='login')
{
$dbAdapter = Zend_Db_Table::getDefaultAdapter();
$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
$authAdapter->setTableName('users')
->setIdentityColumn($loginField)
->setCredentialColumn('password')
->setCredentialTreatment('MD5(CONCAT(?,salt))');
return $authAdapter;
}
我已经通过application.ini和Bootstrap建立了数据连接
protected function _initDatabases()
{
$this->bootstrap('multidb');
$resource = $this->getPluginResource('multidb');
$databases = Zend_Registry::get('config')->resources->multidb;
foreach ($databases as $name => $adapter)
{
$db_adapter = $resource->getDb($name);
Zend_Registry::set($name, $db_adapter);
}
}
所以现在的问题是-如何更改getAuthAdapter以使用我已有的
再次感谢
美国东部时间5月3日9:38更新:
以上这些现在都不是问题。事实上从来没有。当我进一步挖掘时,当我创建来宾用户时,它没有加密密码,也没有添加盐。因此,现在我已登录,但仍有相同的错误。
此错误源于未获取角色\u id
if (!$auth->hasIdentity()){
$auth = Zend_Auth::getInstance();
$role_id = $auth->getIdentity()->role_id;
echo "Role Id =" . $role_id; exit;
} else {
echo "No Identity"; exit;
}
以上返回-角色Id=
所以我有身份,为什么我不能得到role\u id-其中role\u id是列名
再次感谢
5月3日10:17更新:
为了每个人的知识。这是固定的。除了有点害怕之外,我没有别的解释。我清除了身份,它以访客身份重新登录,网站就打开了
所以这个问题为我解决了。这是一个非常棒的脚本,因此如果您正在寻找数据驱动的ACL,请不要犹豫使用上面的链接
谢谢