[許可權擴充套件] Entrust 快取問題

louduanxiong發表於2018-02-07

以前給Entrust(以下稱為許可權管理)加上了快取,當時沒怎麼細看原始碼,今天修改許可權後發現,新改的許可權不怎麼好用,檢視了原始碼發現了一些使用問題,在這裡記錄一下.
首先我們先看一下許可權管理file
檢視快取原始碼

trait EntrustUserTrait
{
    //Big block of caching functionality.
    public function cachedRoles()
    {
        $userPrimaryKey = $this->primaryKey;
        $cacheKey = 'entrust_roles_for_user_'.$this->$userPrimaryKey;
        return Cache::tags(Config::get('entrust.role_user_table'))->remember($cacheKey, Config::get('cache.ttl'), function () {
                return $this->roles()->get();
        });
    }

檢視去快取原始碼

public function save(array $options = [])
{   //both inserts and updates
    $result = parent::save($options);
    Cache::tags(Config::get('entrust.role_user_table'))->flush();
    return $result;
}
public function delete(array $options = [])
{   //soft or hard
    $result = parent::delete($options);
    Cache::tags(Config::get('entrust.role_user_table'))->flush();
    return $result;
}
public function restore()
{   //soft delete undo's
    $result = parent::restore();
    Cache::tags(Config::get('entrust.role_user_table'))->flush();
    return $result;
}

還有trait EntrustRoleTrait 我這裡就不一一列出了,總之這些不夠我們用,下面我總結了什麼時候移除快取的情況,

① 使用者表
當我們修改使用者表中的某些欄位時,需要清除快取標籤為entrust.role_user_table的標籤,比如啟用使用者.
② 使用者角色表
當我們修改使用者角色表時,需要清除快取標籤為entrust.role_user_table的標籤.
③ 角色表
當我們修改角色表時,需要清除快取標籤為entrust.role_user_table的標籤,比如我們修改角色名稱時.
④ 角色許可權表
當我們修改角色許可權表時,需要清除快取標籤為entrust.permission_role_table的標籤.
⑤ 許可權表
當我們修改許可權表時,需要清除快取標籤為entrust.permission_role_table的標籤,比如我們修改許可權名稱時.

希望以上總結能給大家帶來幫助!!!   
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章