Vue不同項目之間傳遞、接收參數(shù)問題
描述一下場景
UC(User-Center)是單獨的一個項目,包括Spring Cloud + Vue, 服務(wù)項目是另一個項目,也是Spring Cloud+ Vue
這里主要針對是登錄操作,我們?yōu)榱送瓿蒘SO(Single Sign On)的效果,認證和授權(quán)在UC完成,用戶發(fā)起資源請求,服務(wù)網(wǎng)關(guān)會進行過濾,判斷請求頭中是否有token以及token是否過期,不滿足就會帶著原訪問資源項目的主頁(這里記為uri)重定向到登錄頁面,此時就是登錄的相關(guān)操作,進行完以后會生成一個token標識,這時候要根據(jù)帶來的uri進行頁面跳轉(zhuǎn),此時要帶上token標識過去。
關(guān)于token的攜帶,以下是幾種方式的分析:
1.LocalStroage方式 (不可?。?/h2>
如果可以用localStorage來存儲token,這樣就不用來回帶著token信息,直接在服務(wù)項目的vue請求攔截器中把token放到headers里邊就可以了? 事實是不可取的,因為localStorage 只在有相同的協(xié)議、相同的主機名、相同的端口下,才能讀取/修改到同一份localStorage數(shù)據(jù)。 這里我們是兩個vue項目,所以無法共享token,其次,假如這種方式可以,難道我們訪問百度還能用訪問騰訊時候存的localStorage里邊的標識?所以,PASS.
localStorage深入了解:localstorage 必知必會
2.Cookie方式 (不推薦)
使用Cookie進行共享,也就是說在UC的vue項目中,登錄成功,將token存入cookie中,在服務(wù)項目的vue請求攔截器中獲取cookie先存入localStorage中,然后放入headers,這樣之后每次從localStorage中拿出token放入headers即可。實現(xiàn)上是可以的因為cookie在兩個vue項目之間是共享的。但是,不好的點是,其一是如果cookie被禁用了怎么辦?,盡管可以處理但是還是說明這個方法存在一些明顯的不足,其次存cookie是很老套的方式,市面上也很少用到。關(guān)于多個cookie參數(shù),如果獲取某一個cookie值的方法封裝:
window.getCookie = function(name) { var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)')); if (match) return match[2]; }
存:
document.cookie = "token=1234";
?。?/p>
let token = getCookie('token');
3.參數(shù)形式 (時效性)
直接以參數(shù)形式傳遞,在另一方獲取請求參數(shù),再放入localStorage中。看起來這種方式似乎是最直接的,其實來說它也保證了token的時效性,但是寫的時候可真給我惡心壞了,不說了只能怪咱百度不會用,其實以參數(shù)傳遞的方式還有很多種,可以多使用幾種,這里暫且總結(jié)一種,后序填坑。
傳: 拼到url中
?。阂欢ㄊ窃陧撁娅@取,無法在請求攔截器取出
到此這篇關(guān)于Vue不同項目之間傳遞、接收參數(shù)問題的文章就介紹到這了,更多相關(guān)vue跨項目傳參內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue的路由守衛(wèi)和keep-alive后生命周期詳解
這篇文章主要為大家詳細介紹了vue路由守衛(wèi)和keep-alive,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03構(gòu)建大型 Vue.js 項目的10條建議(小結(jié))
這篇文章主要介紹了構(gòu)建大型 Vue.js 項目的10條建議(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11