2013-12-10 108 views
0

我有一個ZF2模塊ZfcUser setuped。ZF2 ZfcUser強制登錄

註冊和登錄表單工作正常。我製作了一個自定義模塊連接到Linkedin並獲取用戶信息,然後在數據庫中註冊用戶數據。

註冊部分已完成,但我面臨的問題是我需要使用數據庫中的數據登錄用戶(我擁有關於用戶的所有信息,因此我知道應該登錄哪個用戶) ,但我找不到一種方法讓ZfcUser登錄一個使用PHP而不是登錄表單的特定用戶。

我對適配器和\ Zend \ Authentication不太好。我將不勝感激任何幫助或指示。

我試着看看ZfcUser控制器中的登錄過程,但它讓我感到困惑,然後幫助我。

我也試過在谷歌尋找答案,但我沒有發現任何關於這個主題。

如果可能,我希望「強制登錄過程」在ZfcUser模塊之外。

的看ZfcUser控制器的幾個小時後,我設法建立到做我想做

/** 
* Change the currently logged user 
* @param integer $user_id 
*/ 
public function setLoggedUser($user_id) { 
$storage = new \Zend\Session\Container('Zend_Auth'); 
$storage->storage = $user_id; 
} 
+0

不知道我跟着你在這裏「,但我不能找到一種方法,使ZfcUser登錄一個使用PHP而不是登錄表單的特定用戶。「 – Erik

回答

3

直接在您的存儲設置用戶ID具有一些缺點的方法。如果您使用其他存儲引擎,它(顯然)將不起作用。 ZFCUser的AuthService上註冊的事件將不會執行。

我會通過使用自定義身份驗證適配器來解決此問題。該適配器可從控制器通過以下方式被稱爲:

實現如下所示:

class ForceLogin implements Zend\Authentication\Adapter\AdapterInterface 
{ 
    /** 
    * @var UserInterface 
    */ 
    protected $user; 

    /** 
    * @param $user 
    */ 
    function __construct($user) 
    { 
     $this->user = $user; 
    } 

    public function authenticate() 
    { 
     return new Zend\Authentication\Result(
      Result::SUCCESS, 
      $this->getUser()->getId() 
     ); 
    } 
}