[英]Zend framework Plugin Authenticate
我正在嘗試創建ZF1插件來集中身份驗證系統。 到目前為止,這是我所做的:
class Application_Plugin_Auth extends Zend_Controller_Plugin_Abstract {
private $_whitelist;
protected $_request;
public function __construct() {
$this->_whitelist = array(
'default'
);
}
public function preDispatch(Zend_Controller_Request_Abstract $request) {
$this->_request = $request;
$module = strtolower($this->_request->getModuleName());
if (in_array($module, $this->_whitelist)) {
return;
}
$auth = Zend_Auth::getInstance();
if (!$auth->hasIdentity()) {
$this->_request->setModuleName('admin');
$this->_request->setControllerName('auth');
$this->_request->setActionName('login');
return;
}
}
}
如果沒有登錄,它可以完美地避免人們訪問后端。 現在,我想實現一個不帶參數的login
功能,該功能將抓取當前請求,檢查參數( getPost ),然后執行登錄工作:
public function login(){
// Here will check the request data and then try to login
}
我的問題是如何在此函數中獲取當前的請求對象? 另外,如何在我的控制器中使用此登錄功能?
非常感謝
當您不想將請求作為參數傳遞給函數時,這就是您想要的:
$request = Zend_Controller_FrontController::getInstance()->getRequest();
$postData = $request->getPost();
但是,通常您確實希望將參數傳遞給函數。 通常是因為您希望使用登錄功能運行的對象獨立於系統的其余部分。 在這種情況下,只有極少數的情況我可以認為與此不同。
當您希望從前端控制器獲取Request
,可以發出以下命令:
$request = $this->getRequest();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.