所以!
我有一个问题:例如,如何仅为adminisitrator访问模块的某些部分。
例如,我有模块相册。它具有控制器索引,删除,添加,编辑,完整。我希望所有角色都可以使用完整的索引控制器,但只能为管理员编辑,删除和添加操作。
我必须使用哪个模块才能做到这一点?我找到了Zend \ Authentification。
表格为:username
,password
,role
。
如何验证用户?:
// do the authentication
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authAdapter);
if ($result->isValid()) {
// success: store database row to auth's storage
// system. (Not the password though!)
$data = $authAdapter->getResultRowObject(null, 'password');
$auth->getStorage()->write($data);
$this->_redirect('/');
} else {
// failure: clear database row from session
$this->view->message = 'Login failed.';
}
之后我将访问用户数据,例如:
Zend_Auth::getInstance()->getIdentity()->username;
因此,在行动中,我想要限制访问,我只需要使用:
if(Zend_Auth::getInstance()->getIdentity()->role == admin) {
redirect("auth/login");
}
右?
问题:
我的建议是如何正确检查每个控制器中的用户角色?
我是否正确理解如何使用Zend \ Authentification并限制对某些操作的访问?所以将来我会对每个动作使用相同的,对吧?
其他问题:Acl
模块是否用于管理权限?所以需要Acl来帮助Zend_Auth获得权限,对吧?
答案 0 :(得分:1)
为了能够这样做,您必须构建或实现ACL(访问控制列表)。您还可以将第三方解决方案与前面提到的Zend_Auth(或任何其他身份验证模块)结合使用。您可以在此处阅读有关Zend ACL的更多信息:Zend ACL introduction
例如,您也可以查看BjyAuthorize
。此ACL模块为您的应用程序提供完整的授权解决方案,但依赖于ZfcUser
进行用户身份验证和注册。这可能是一个很好的入门方式。
如果您已完成构建或实施BjyAuthorize
,则可以轻松地将访问权限检查与您的路由绑定(但还有许多其他方法)。您可以在此处查看其工作原理on the BjyAuthorize GitHub page
这些模块将教会您如何在Zend Framework 2应用程序中构建身份验证和授权。