【发布时间】:2014-04-28 18:57:34
【问题描述】:
所以!
我有一个问题:例如,如何只允许管理员访问模块的某些部分。
例如,我有模块相册。它有控制器索引、删除、添加、编辑、完整。我希望所有角色都可以使用完整和索引控制器,但仅对管理员进行编辑、删除和添加操作。
我必须使用什么模块来做到这一点?我找到了 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 并限制对某些操作的访问?所以以后我会为每个动作使用相同的,对吧?
附加问题:Aclmodule 是否用于管理权限?所以需要 Acl 来帮助 Zend_Auth 获得权限,对吧?
【问题讨论】:
-
Zend_Auth 是 Zend Framework 组件,而不是 Zend Framework 2,因为您已标记此主题。下一个注意事项是 Zend_Auth 用于身份验证而不是授权。身份验证确定一个实体是否真的是它声称的那样,而授权是您决定允许或拒绝访问资源的过程,并且是授权您可以使用 Zend_Acl
-
所以我必须在 ZF2 中使用 Zend\Authentification(不是 Zend_Auth),对吗?谢谢。
标签: authentication zend-framework2