2017-08-02 32 views
0

成功登錄後,我設置:檢測到的Cookie已不刷新頁面刪除

$rootScope.globals = { 
    currentUser: { 
     username: username, 
     token: token 
    } 
}; 

var cookieExp = new Date(); 
cookieExp.setHours(cookieExp.getHours() + 1); 

$cookies.putObject('globals', $rootScope.globals, { expires: cookieExp }); 

當我「清除所有的歷史」在Mozilla Firefox中,用戶令牌依然存在,我可以在受限制的內容中導航,直到我作出明確頁面刷新。有沒有什麼辦法可以檢測到沒有頁面刷新的情況下,證書已被刪除?

+1

這是你真正需要處理的情況嗎?不清除歷史記錄的用戶是否也會關閉應用程序的選項卡?但是你可以做的是定義一個時間間隔並檢查cookie值的變化。 –

+0

在我的情況下,沒有必要處理,但仍然好奇。 – Justas

回答

1

爲了與cookies同步,globals應在每次使用時撥打$ cookie,例如,是真實的單一來源:

app.service('globals', function ($cookies) { 
    this.get = function (key) { 
    return $cookies.getObject('globals'); 
    }; 
    this.set = function (key, obj) { 
    var cookieExp = new Date(); 
    cookieExp.setHours(cookieExp.getHours() + 1); 
    $cookies.putObject('globals', obj, { expires: cookieExp }); 
    }; 
}); 

由於cookie的請求可能是低效的,服務可以選擇性地提供到期緩存。

使用根作用域作爲全局變量作用域is antipattern