前言:
由于業(yè)務(wù)需求,之前實(shí)現(xiàn)的單點(diǎn)登錄揪阶。是我們自己開發(fā)的一個(gè)鑒權(quán)系統(tǒng)昧碉。實(shí)現(xiàn)過程從0-1都是我們自己去設(shè)計(jì)。(我們就叫外部模式吧)
現(xiàn)在有個(gè)需求就是我們的系統(tǒng)要集成已有第三方的單點(diǎn)登錄搪锣。既集團(tuán)4a集成。
現(xiàn)在的需求是這樣的彩掐,能夠最小化配置构舟,能夠兼容外部模式,也能夠兼容4a模式堵幽,然后通過一個(gè)配置狗超。打包,可以將這兩種都區(qū)分開來朴下,并且都可以正常運(yùn)行努咐。如果是部署自研鑒權(quán)系統(tǒng)方案的時(shí)候,則關(guān)于集成第三方相關(guān)的代碼不打包進(jìn)來殴胧。反之部署集成第三方代碼也是同樣的道理渗稍。
實(shí)現(xiàn)思路
通過node.js在編譯的時(shí)候進(jìn)對(duì)入口文件進(jìn)行文件的替換佩迟。(這個(gè)入口文件就是單點(diǎn)登錄邏輯。是一個(gè)js文件),得益于vue3中的compostion-api方式竿屹。所以可以將一些邏輯封裝成compostion-api方式
所以我們?cè)趀nv-config.js中配置好登錄模式以及跳轉(zhuǎn)地址等报强。我們來看看有些什么內(nèi)容
替換登錄入口邏輯如下:
在打包前調(diào)用utils.toggleLoginMode()方法即可。
ps:當(dāng)然還有一些其他的代碼我這里就不全部貼出來了拱燃。因?yàn)檫€有一些兼容性處理代碼秉溉。到這里其實(shí)已經(jīng)差不多了。不一定適合所有人碗誉。只是剛好有這個(gè)需求所以搞了這么個(gè)處理方案召嘶。