2016-12-22 56 views
0
$this->loadComponent('Auth', [ 
    'storage' => 'Memory', 

它是什麼意思它保存在內存中?那麼在哪裏?內存 ?我正在尋找並清楚。AuthComponent存儲設置爲內存

+0

'用於保存用戶記錄的存儲類。在使用無狀態身份驗證器時,您應該將其設置爲Memory,因此我認爲它無法存儲,因爲它無狀態。 – Jelmer

+0

閱讀文檔並檢查源代碼? https://github.com/cakephp/cakephp/blob/master/src/Auth/Storage/MemoryStorage.php – burzum

回答

1

比較AUTH session storage class

/** 
* Read user record from session. 
* 
* @return array|null User record if available else null. 
*/ 
public function read() 
{ 
    if ($this->_user !== null) { 
     return $this->_user ?: null; 
    } 
    $this->_user = $this->_session->read($this->_config['key']) ?: false; 
    return $this->_user; 
} 

/** 
* Write user record to session. 
* 
* The session id is also renewed to help mitigate issues with session replays. 
* 
* @param array|\ArrayAccess $user User record. 
* @return void 
*/ 
public function write($user) 
{ 
    $this->_user = $user; 
    $this->_session->renew(); 
    $this->_session->write($this->_config['key'], $user); 
} 

要在auth memory storage class

/** 
* {@inheritDoc} 
*/ 
public function read() 
{ 
    return $this->_user; 
} 

/** 
* {@inheritDoc} 
*/ 
public function write($user) 
{ 
    $this->_user = $user; 
} 

而會話存儲類(也可能是其他第三方的實現)去找找/存儲數據某處,內存存儲類只存儲/檢索自己的_user屬性中的信息。因此,存儲在存儲器存儲類中的數據僅在(http)請求的生命期中持續存在,那麼下一個http請求將不具有認證憑證,並且如果相關的話將需要再次提供認證憑證。這種類型的存儲適用於無國籍身份驗證系統,indicated in the docs

對於無狀態的認證程序存儲配置應設置爲內存中,以便AuthComponent不使用會話來存儲用戶記錄。