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

Vue前端登錄token信息驗證功能實現(xiàn)

 更新時間:2022年12月27日 15:06:23   作者:Eric加油學!  
最近公司新啟動了個項目,用的是vue框架在做,下面這篇文章主要給大家介紹了關于vue實現(xiàn)token登錄驗證的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

用戶在首次訪問網(wǎng)站時,應在登錄頁面填寫賬號密碼,前端攜帶用戶信息向服務器請求。

1、服務器驗證用戶信息

驗證失?。航o前端響應數(shù)據(jù)

驗證通過:對該用戶創(chuàng)建token,并以響應數(shù)據(jù)返回給前端

2、前端接受后端響應的數(shù)據(jù)

錯誤信息:提示錯誤消息

正確信息:頁面進行跳轉(zhuǎn)至首頁,同時保存token(可以保存在cookie或localstorage)

3、用戶點擊某功能模塊的觸發(fā)請求(比如某功能有權限設置或是是否需要token)

利用路由守衛(wèi)beforeEach()

將保存的token添加至請求攔截器的請求頭中,并根據(jù)響應攔截器返回的狀態(tài)碼判斷該功能模塊是否有權限做出相應的跳轉(zhuǎn)或攔截。

request.js

// 對于axios進行二次封裝
import axios from 'axios';
const requests = axios.create({
    // 配置對象
    // 基礎路徑,發(fā)請求的時候,路徑當中會有api
    baseURL: "/api",
    // 代表請求超時的時間 5s
    timeout: 5000,
});
 
// 請求攔截器:在發(fā)請求之前,請求攔截器可以監(jiān)測到,可以在請求發(fā)出去之前做一些事情
requests.interceptors.request.use(
    (config)=>{
        const token = localStorage.getItem('token');
        // console.log('token',token);
        if(token) {
            let token = JSON.parse(localStorage.getItem('token')).token;
            config.headers['Authorization'] = token;
        }
    return config;
});
// 響應攔截器
requests.interceptors.response.use(
    (res)=>{
        const { status, data,message } = res
        if(data.success){
           return data
        }else{
            // 假設后端返回狀態(tài)碼20005代表沒有訪問權限
            if (data.code === 20006) {
                alert('您沒有該功能的權限!')
            }
            // 將錯誤信息通過Promise返回,
            return Promise.reject(message)
        }
    },(error)=>{
        // 服務器響應失敗的回調(diào)函數(shù)
        return Promise.reject(error);
    }
);
// 對外暴露
export default requests;

Login.vue

    submitLogin(formName){
            this.$refs[formName].validate(async (valid) => {
                if (valid) {
                    // 先發(fā)送請求,驗證用戶
                    const {username,password} = this.loginForm;
                    let result = await this.$API.login.reqLogin(username,password);
                    if(result.code == 200){
                        // 成功后存儲token并路由跳轉(zhuǎn)
                        let token = {
                            time: new Date().getTime(),
                            token: result.data
                        };
                        localStorage.setItem("token",JSON.stringify(token));
                        this.$router.replace('/home');
                        this.$message({type:'success',message:'登錄成功'});
                    }else{
                        alert('登錄失敗')
                    }
                } else {
                    this.$message.error('請重新輸入賬戶和密碼');
                    return false;
                }
            });
        }

在上面的代碼中,將token和響應的時間戳一起保存成json對象,這樣可以做到 每隔一定時間后需要重新登錄的功能

router.js

// 判斷登錄是否過時,一天
let time=24 * 60 * 60 * 1000
// 全局前置守衛(wèi)(路由跳轉(zhuǎn)之前進行判斷)
router.beforeEach((to, from, next) => {
    // 用戶登錄了才會有token,所以可以用來判斷是否登錄  
    let token = JSON.parse(localStorage.getItem('token'));
    if (token) {
        let deltime = new Date().getTime()
        if(deltime - token.time > time){
            alert('登錄已經(jīng)過期,請重新登錄')
            localStorage.removeItem('token')
            next('/login')
        }else{
          next()
        }
    } else {   // 若沒有token,訪問登錄頁面放行,其他的路由請求均拒絕,跳轉(zhuǎn)到登錄頁
        if (to.path == '/login') {
            next()
        } else {
            if(from.path == '/'){
                next('/login')
            }else{
                alert('請先登錄,再訪問其他頁面')
                next('/login')
            }
        }
    }
})

到此這篇關于Vue前端登錄token信息驗證功能實現(xiàn)的文章就介紹到這了,更多相關Vue token驗證內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue如何使用bable將es6轉(zhuǎn)譯為es5

    vue如何使用bable將es6轉(zhuǎn)譯為es5

    這篇文章主要介紹了vue如何使用bable將es6轉(zhuǎn)譯為es5問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • vue2中組件互相調(diào)用實例methods中的方法實現(xiàn)詳解

    vue2中組件互相調(diào)用實例methods中的方法實現(xiàn)詳解

    vue在同一個組件內(nèi),方法之間經(jīng)常需要互相調(diào)用,下面這篇文章主要給大家介紹了關于vue2中組件互相調(diào)用實例methods中的方法實現(xiàn)的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • Vue+Element UI實現(xiàn)下拉菜單的封裝

    Vue+Element UI實現(xiàn)下拉菜單的封裝

    這篇文章主要為大家詳細介紹了Vue+Element UI實現(xiàn)下拉菜單的封裝代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • vue-cli入門之項目結構分析

    vue-cli入門之項目結構分析

    本篇文章主要介紹了vue-cli入門之項目結構,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • vue子組件如何使用父組件傳過來的值

    vue子組件如何使用父組件傳過來的值

    這篇文章主要介紹了vue子組件如何使用父組件傳過來的值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue.js組件高級特性實例詳解

    Vue.js組件高級特性實例詳解

    這篇文章主要介紹了Vue.js組件高級特性,結合實例形式詳細分析了vue.js組件遞歸、模板、動態(tài)加載、渲染等相關操作技巧,需要的朋友可以參考下
    2018-12-12
  • Vue精美簡潔登錄頁完整代碼實例

    Vue精美簡潔登錄頁完整代碼實例

    這篇文章主要給大家介紹了關于Vue精美簡潔登錄頁完整代碼的相關資料,通過文中的方法大家可以使用實現(xiàn)簡單的用戶登錄界面,下面通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • Vue 3 中 h 方法示例詳解

    Vue 3 中 h 方法示例詳解

    Vue3中的h方法用于創(chuàng)建虛擬DOM節(jié)點,是渲染函數(shù)的核心,它接受三個參數(shù):type(節(jié)點類型)、props(屬性對象)和children(子節(jié)點),通過示例展示了如何使用h方法創(chuàng)建簡單的HTML元素、帶有屬性的元素、嵌套元素和自定義組件,感興趣的朋友一起看看吧
    2025-03-03
  • 使用vue.js寫一個tab選項卡效果

    使用vue.js寫一個tab選項卡效果

    Vue 實現(xiàn) Tab切換實現(xiàn)的場景很多,比如,利用vue-router、利用第三方插件、利用組件等等.本文使用組件來實踐tab選項卡
    2017-03-03
  • Vue3?Watch踩坑實戰(zhàn)之watch監(jiān)聽無效

    Vue3?Watch踩坑實戰(zhàn)之watch監(jiān)聽無效

    Vue.js中的watch選項用于監(jiān)聽Vue實例上某個特定的數(shù)據(jù)變化,下面這篇文章主要給大家介紹了關于Vue3?Watch踩坑實戰(zhàn)之watch監(jiān)聽無效的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05

最新評論

胶州市| 营山县| 维西| 景洪市| 卢龙县| 临海市| 正阳县| 乡城县| 疏勒县| 登封市| 左云县| 原阳县| 河北区| 大石桥市| 革吉县| 陆川县| 景泰县| 贵州省| 阳西县| 榆中县| 永清县| 班玛县| 寿阳县| 禄劝| 凤阳县| 额敏县| 呼伦贝尔市| 恩平市| 巩留县| 浠水县| 仁化县| 密云县| 昭苏县| 萨迦县| 双峰县| 杨浦区| 砀山县| 定安县| 清丰县| 莫力| 中卫市|