遇到此問題的背景:項目需要實現(xiàn)單點登錄,在前后端分離的前提下,前臺如何保存token值成為了一個問題。想到的解決方案是,將token值統(tǒng)一存到一個前端程序,其他的前端程序去這個前端程序去取token(其他更好的解決方案歡迎指導~~)。在項目用angular的情況下,選擇了以下插件:angular-cross-storage,此插件可以實現(xiàn)跨域存取localStorage,操作非常簡單,都有demo。
通常情況下,設置HTTP的authorization只需在congfig中進行如下配置:
var app = angular.module("myApp",[]);
app.config(function($httpProvider) { $httpProvider.defaults.headers.common["Authorization"] = 所需帶的權限; });
但是在此處,權限值是存在另一個前端程序的token值,獲取權限token值是異步請求,并不能確定在何時能完成,說不定還沒得到token值,頁面已經(jīng)發(fā)出了http請求,而這個沒設置Authorization的請求,勢必會返回401。
So 先要設置一個攔截器,并在攔截器里設置請求頭,代碼如下: