簡體   English   中英

Zend框架插件認證

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM