2017-01-20 44 views
0

類似於this question。但OP表示,他的問題「自行解決」。衛星不與一些客戶端發送驗證標頭

也類似於this

(我要去複製粘貼描述的某些部分,因爲這幾乎是同樣的問題)

我使用angularjs/laravel一個項目。這是一個基於令牌的項目,所以我使用衛星來處理。

我們的客戶之一有無法登錄的問題,它不僅不能在他的瀏覽器上工作......如果他在他的電腦中創建一個新的用戶帳戶,它甚至不工作。

問題是它沒有向服務器發送授權令牌,有效的令牌存儲在本地會話中,但它沒有在頭文件中發送。另外我無法手動設置標題。

在開發工具的網絡選項卡中查看請求標頭時,可以看到請求中不包含授權標頭。

我迷失在做什麼,因爲我覺得我盡我所能。 嘗試清理緩存並刪除Cookie。檢查cookie是否被阻止(他們不是)。檢查了奇怪的防病毒,防火牆或奇怪的程序安裝(沒有)。我也嘗試重新啓動系統,併爲同一臺計算機創建一個新的用戶帳戶,沒有任何工作。

它實際上適用於所有其他客戶端的電腦,除了去年,另一個客戶端(同一個項目)發生了類似的事情,我們把它歸咎於他的舊操作系統不支持衛星的東西,但這次它是最後一代電腦。 它也用於工作,並突然停止與他的電腦工作。 (也許在運行ccleaner之後)。

我的懷疑是,這不是真的與他的電腦有關,而是一個奇怪的錯誤在衛星觸發一些棘手的條件。

我希望有人知道至少在哪裏可以開始尋找這個問題的答案。

這也是我第一次在這裏發表問題......(感覺害羞),嗨。 (幫助)

回答

0

我還不知道爲什麼會發生這種情況。

最後我通過編輯部分衛星源代碼解決了它。

if (_this.SatellizerShared.isAuthenticated() && _this.SatellizerConfig.httpInterceptor()) { 
        var tokenName = _this.SatellizerConfig.tokenPrefix ? 
         [_this.SatellizerConfig.tokenPrefix, _this.SatellizerConfig.tokenName].join('_') : _this.SatellizerConfig.tokenName; 
        var token = _this.SatellizerStorage.get(tokenName); 
        if (_this.SatellizerConfig.tokenHeader && _this.SatellizerConfig.tokenType) { 
         token = _this.SatellizerConfig.tokenType + ' ' + token; 
        } 
        config.headers[_this.SatellizerConfig.tokenHeader] = token; 
       } 

Satellizer沒有設置報頭,所以我增加:config.headers[_this.SatellizerConfig.tokenHeader] = token; 外if和satellizer的是能夠正確地設置首標。

之後,我解開了我的更改,看看在正確設置標題之後,衛星是否可以按預期工作並且工作正常,所以出於某種原因,它無法識別我的已驗證用戶並將標題保留爲失敗。但在強制它添加標題之後,每次都可以正常工作。

希望這可以幫助有人在類似的問題掙扎。