我想在基于ZF的应用程序中进行授权。 在Kohana我可以做类似
的事情public $auth;
public $user;
public function before()
{
parent::before();
$this->auth = Auth::instance();
$this->user = $this->auth->get_user();
// $this->user is object if user was logged in or FALSE if not
}
在我的抽象控制器中。
如何在Zend中制作相同的内容?我已经阅读了插件,并认为这是我需要的,但没有找到任何信息保存插件类文件,我应该在哪里启用它们?
答案 0 :(得分:2)
您也可以在ZF中执行类似于您在Kohana中所做的事情。我个人从来没有使用过Kohana,但我认为ZF的你的例子版本与之类似:
// assuming IndexController
class IndexController extends Zend_Controller_Action {
protected $_auth;
protected $_user;
// you could also use init() here.
public function preDispatch() {
$this->_auth = Zend_Auth::getInstance();
$this->_user = $this->_auth->getIdentity();
}
}
如果你想在抽象控制器中使用它,那么你可以创建一个扩展Zend_Controller_Action的(例如My_Controller_Action)。有了这个,IndexController只会扩展你的抽象控制器而不是Zend_Controller_Action。
答案 1 :(得分:0)
喂!这也很简单。但是,如果您想获得授权或处理新授权?什么,这两个都来了。首先使用数据库表中的凭据处理授权:
$db = $this->getInvokeArg('bootstrap')->db;
$auth = Zend_Auth::getInstance();
$authAdapter = new Zend_Auth_Adapter_DbTable($db);
$authAdapter->setTableName('authLogin')
->setIdentityColumn('username')
->setCredentialColumn('password')
->setIdentity($username)
->setCredential($password);
$result = $auth->authenticate($authAdapter);
if ($result->isValid()) {
// Yeah, logged in. Do some stuff here...
}
如果用户当前已登录,则会进行检查:
$auth = Zend_Auth::getInstance();
if ($auth->hasIdentity()) {
// User is logged in. Retrieve its identity
$username = $auth->getIdentity();
}
希望这会有所帮助......