最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue同一瀏覽器登錄多賬號(hào)處理方案

 更新時(shí)間:2024年01月19日 11:53:44   作者:九段刀客  
項(xiàng)目在線上會(huì)遇到管理員類(lèi)似權(quán)限比較大的用戶,會(huì)在同一瀏覽器登陸多個(gè)賬號(hào),遇到這樣的問(wèn)題如何處理呢,下面小編給大家介紹vue同一瀏覽器登錄多賬號(hào)處理方法,感興趣的朋友一起看看吧

vue同一瀏覽器登錄多賬號(hào)處理

背景

項(xiàng)目在線上會(huì)遇到管理員類(lèi)似權(quán)限比較大的用戶,會(huì)在同一瀏覽器登陸多個(gè)賬號(hào)。由于后端是通過(guò)cookie識(shí)別,此時(shí)cookie已經(jīng)是最新登陸賬號(hào)信息。管理員有可能切換tab至之前頁(yè)面,此時(shí)頁(yè)面顯示還是之前信息,當(dāng)修改信息,提交請(qǐng)求時(shí),其實(shí)后端是按照最新登陸用戶進(jìn)行信息處理的。這種情況下,容易誤導(dǎo)用戶,造成錯(cuò)誤的信息修改。

解決

前端種個(gè)cookie,監(jiān)聽(tīng)頁(yè)面tab切換事件,通過(guò)接口返回的id與cookie中的id對(duì)比,若不一致,則提示用戶刷新頁(yè)面,頁(yè)面重新渲染,展示的就是最新登陸用戶的信息了

具體實(shí)現(xiàn)

store.js

// 裝js-cookie種cookie
import Cookies from 'js-cookie';
// 每次登錄的時(shí)候,通過(guò)接口獲取當(dāng)前登錄賬號(hào)的LoginName
getLoginName() {
        return api
            .getLoginName()
            .then((res) => {
                if (res.status === 0) {
                // 這里通過(guò)vuex存下來(lái) 在app.vue里使用(項(xiàng)目本身已使用vuex 沒(méi)有的話可以參考vue組件通信)
                commit('RECORD_LOGIN_NAME', res.loginName);
                // 拿到結(jié)果,存到cookie里
                	this.loginName = res.loginName
                    Cookies.set('loginName', res.loginName);
                }
            })
            .catch((e) => {
                return false;
            });
    },

app.vue
在入口頁(yè)添加監(jiān)聽(tīng)頁(yè)面tab切換的事件

export default{
    data () {
        return {
            isConfirmShow: false,
        };
    },
    methods: {
        checkNameExpired() {
            // this.loginName:接口請(qǐng)求獲取name的存下來(lái)
            const loginName_cookie = Cookie.get('loginName');
            if (this.loginName !== loginName_cookie && !this.isConfirmShow) {
                this.isConfirmShow = true;
                // 這里樣式可以根據(jù)項(xiàng)目?jī)?yōu)化
                alert(`已登錄${loginName_cookie},點(diǎn)擊 “確定” 刷新本頁(yè)面。`);
                window.location.reload();
            	this.isConfirmShow = false;
            }
        }
    },
    mounted() {
        document.addEventListener('visibilitychange', this.checkNameExpired);
    },
    beforeDestroy() {
        document.removeEventListener('visibilitychange', this.checkNameExpired);
    }
};

補(bǔ)充:

vue項(xiàng)目中實(shí)現(xiàn)同一個(gè)瀏覽器登錄多個(gè)用戶賬號(hào)

需求

同一個(gè)瀏覽器兩個(gè)tab分別登錄AB兩個(gè)賬號(hào)

問(wèn)題描述

用戶登錄會(huì)在緩存中存token,鍵名都是一樣的,所以會(huì)出現(xiàn)A用戶登錄,后在另外一個(gè)tab里登錄B用戶,A用戶再訪問(wèn)接口的時(shí)候,其實(shí)是用的B用戶的token,因?yàn)槊總€(gè)用戶的權(quán)限不一樣,這樣就照成了bug

解決思路

讓不同的用戶存儲(chǔ)的token的鍵名不一樣

實(shí)現(xiàn)方法 在登錄的時(shí)候存儲(chǔ)用TOKEN+userName作為鍵來(lái)存儲(chǔ)token

import Cookies from 'js-cookie'
import Config from '@/config'
const TokenKey = Config.TokenKey;
export function getToken() {
  return Cookies.get( TokenKey + sessionStorage.getItem( 'username' ) )
}
export function setToken( token, rememberMe, username ) {
  if ( rememberMe ) {
    return Cookies.set( TokenKey + username, token, { expires: Config.tokenCookieExpires } )
  } else {
    return Cookies.set( TokenKey + username, token )
  }
}
export function removeToken( username ) {
  return Cookies.remove( TokenKey + username )
}

頁(yè)面刷新前存儲(chǔ)用戶名

    window.addEventListener("beforeunload", () => {
      sessionStorage.setItem("username", this.user.username || "");
    });

到此這篇關(guān)于vue同一瀏覽器登錄多賬號(hào)處理的文章就介紹到這了,更多相關(guān)vue同一瀏覽器登錄多賬號(hào)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于vue.extend和vue.component的區(qū)別淺析

    關(guān)于vue.extend和vue.component的區(qū)別淺析

    最近工作中遇到了vue.extend,vue.component,但二者之間的區(qū)別與聯(lián)系是什么呢?下面這篇文章主要給大家介紹了關(guān)于vue.extend和vue.component區(qū)別的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-08-08
  • vue之keepAlive使用案例詳解

    vue之keepAlive使用案例詳解

    這篇文章主要介紹了vue之keepAlive使用案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Vue中渲染系統(tǒng)模塊的實(shí)現(xiàn)詳解

    Vue中渲染系統(tǒng)模塊的實(shí)現(xiàn)詳解

    想要實(shí)現(xiàn)一個(gè)簡(jiǎn)潔版的Mini-Vue框架,應(yīng)該包含三個(gè)模塊:分別是:渲染系統(tǒng)模塊、可響應(yīng)式系統(tǒng)模塊、應(yīng)用程序入庫(kù)模塊,本文主要介紹的是渲染系統(tǒng)模塊的實(shí)現(xiàn),需要的可以參考一下
    2023-07-07
  • vue3封裝側(cè)導(dǎo)航文字骨架效果組件

    vue3封裝側(cè)導(dǎo)航文字骨架效果組件

    這篇文章主要為大家詳細(xì)介紹了vue3封裝側(cè)導(dǎo)航文字骨架效果組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Vue3中pinia的使用與持久化處理詳解

    Vue3中pinia的使用與持久化處理詳解

    Pinia?是一個(gè)基于?Vue?3?的狀態(tài)管理庫(kù),可以更好地支持?TypeScript?和更靈活的狀態(tài)管理方式,本文主要介紹了pinia的使用與持久化處理,需要的可以參考一下
    2023-07-07
  • Vue.js框架路由使用方法實(shí)例詳解

    Vue.js框架路由使用方法實(shí)例詳解

    這篇文章主要介紹了Vue.js框架路由使用方法實(shí)例詳解的相關(guān)資料,這里提供實(shí)例幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • vue中集成省市區(qū)街四級(jí)地址組件的實(shí)現(xiàn)過(guò)程

    vue中集成省市區(qū)街四級(jí)地址組件的實(shí)現(xiàn)過(guò)程

    我們?cè)陂_(kāi)發(fā)中常會(huì)遇到選擇地址的需求,有時(shí)候只需要選擇省就可以,有時(shí)候則需要選擇到市、縣,以至于鄉(xiāng)鎮(zhèn),甚至哪個(gè)村都有可能,下面這篇文章主要給大家介紹了關(guān)于vue中集成省市區(qū)街四級(jí)地址組件的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • vue關(guān)于重置表單數(shù)據(jù)出現(xiàn)undefined的解決

    vue關(guān)于重置表單數(shù)據(jù)出現(xiàn)undefined的解決

    這篇文章主要介紹了vue關(guān)于重置表單數(shù)據(jù)出現(xiàn)undefined的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 封裝一個(gè)更易用的Dialog組件過(guò)程詳解

    封裝一個(gè)更易用的Dialog組件過(guò)程詳解

    這篇文章主要為大家介紹了封裝一個(gè)更易用的Dialog組件過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 淺談vue-cli加載不到dev-server.js的解決辦法

    淺談vue-cli加載不到dev-server.js的解決辦法

    本篇文章主要介紹了淺談vue-cli加載不到dev-server.js的解決辦法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11

最新評(píng)論

丹阳市| 临泉县| 奎屯市| 曲松县| 西平县| 宁波市| 九龙城区| 双牌县| 宁强县| 博兴县| 彰化市| 闵行区| 阳谷县| 凤冈县| 称多县| 盐津县| 波密县| 峨眉山市| 商洛市| 砚山县| 五河县| 大连市| 常德市| 宁津县| 包头市| 巴楚县| 宜章县| 博爱县| 新巴尔虎右旗| 阳江市| 高唐县| 平果县| 百色市| 托克托县| 平山县| 吉木乃县| 洪洞县| 兴宁市| 保德县| 阳东县| 盐边县|