Vue項(xiàng)目中實(shí)現(xiàn)用戶登錄及token驗(yàn)證

在前后端完全分離的情況下舅世,Vue項(xiàng)目中實(shí)現(xiàn)token驗(yàn)證大致思路如下:

1浪慌、第一次登錄的時(shí)候冤荆,前端調(diào)后端的登陸接口,發(fā)送用戶名和密碼

2权纤、后端收到請(qǐng)求钓简,驗(yàn)證用戶名和密碼,驗(yàn)證成功汹想,就給前端返回一個(gè)token

3外邓、前端拿到token,將token存儲(chǔ)到localStorage和vuex中古掏,并跳轉(zhuǎn)路由頁(yè)面

4损话、前端每次跳轉(zhuǎn)路由,就判斷 localStroage 中有無(wú) token 槽唾,沒有就跳轉(zhuǎn)到登錄頁(yè)面丧枪,有則跳轉(zhuǎn)到對(duì)應(yīng)路由頁(yè)面

5、每次調(diào)后端接口庞萍,都要在請(qǐng)求頭中加token

6拧烦、后端判斷請(qǐng)求頭中有無(wú)token,有token钝计,就拿到token并驗(yàn)證token恋博,驗(yàn)證成功就返回?cái)?shù)據(jù)齐佳,驗(yàn)證失敗(例如:token過期)就返回401债沮,請(qǐng)求頭中沒有token也返回401

7炼吴、如果前端拿到狀態(tài)碼為401,就清除token信息并跳轉(zhuǎn)到登錄頁(yè)面

vue-cli搭建一個(gè)項(xiàng)目疫衩,簡(jiǎn)單說明前端要做的事:

一硅蹦、調(diào)登錄接口成功,在回調(diào)函數(shù)中將token存儲(chǔ)到localStorage和vuex中

login.vue


store文件夾下的index.js

import Vue from 'vue';

import Vuex from 'vuex';

Vue.use(Vuex);

const store = new Vuex.Store({

? state: {

? ? // 存儲(chǔ)token

? ? Authorization: localStorage.getItem('Authorization') ? localStorage.getItem('Authorization') : ''

? },

? mutations: {

? ? // 修改token闷煤,并將token存入localStorage

? ? changeLogin (state, user) {

? ? ? state.Authorization = user.Authorization;

? ? ? localStorage.setItem('Authorization', user.Authorization);

? ? }

? }

});

export default store;


二提针、路由導(dǎo)航守衛(wèi)

router文件夾下的index.js

import Vue from 'vue';

import Router from 'vue-router';

import login from '@/components/login';

import home from '@/components/home';

Vue.use(Router);

const router = new Router({

? routes: [

? ? {

? ? ? path: '/',

? ? ? redirect: '/login'

? ? },

? ? {

? ? ? path: '/login',

? ? ? name: 'login',

? ? ? component: login

? ? },

? ? {

? ? ? path: '/home',

? ? ? name: 'home',

? ? ? component: home

? ? }

? ]

});

// 導(dǎo)航守衛(wèi)

// 使用 router.beforeEach 注冊(cè)一個(gè)全局前置守衛(wèi),判斷用戶是否登陸

router.beforeEach((to, from, next) => {

? if (to.path === '/login') {

? ? next();

? } else {

? ? let token = localStorage.getItem('Authorization');

? ? if (token === 'null' || token === '') {

? ? ? next('/login');

? ? } else {

? ? ? next();

? ? }

? }

});

export default router;

三曹傀、請(qǐng)求頭加token

// 添加請(qǐng)求攔截器辐脖,在請(qǐng)求頭中加token

axios.interceptors.request.use(

? config => {

? ? if (localStorage.getItem('Authorization')) {

? ? ? config.headers.Authorization = localStorage.getItem('Authorization');

? ? }

? ? return config;

? },

? error => {

? ? return Promise.reject(error);

? });

四、如果前端拿到狀態(tài)碼為401皆愉,就清除token信息并跳轉(zhuǎn)到登錄頁(yè)面

????? localStorage.removeItem('Authorization');

? ? ? this.$router.push('/login');

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嗜价,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子幕庐,更是在濱河造成了極大的恐慌久锥,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件异剥,死亡現(xiàn)場(chǎng)離奇詭異瑟由,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)冤寿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門歹苦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人督怜,你說我怎么就攤上這事殴瘦。” “怎么了号杠?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵蚪腋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我姨蟋,道長(zhǎng)屉凯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任眼溶,我火速辦了婚禮悠砚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘偷仿。我一直安慰自己哩簿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布酝静。 她就那樣靜靜地躺著节榜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪别智。 梳的紋絲不亂的頭發(fā)上宗苍,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音薄榛,去河邊找鬼讳窟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛敞恋,可吹牛的內(nèi)容都是我干的丽啡。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼硬猫,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼补箍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起啸蜜,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤坑雅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后衬横,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體裹粤,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年蜂林,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了遥诉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡噪叙,死狀恐怖突那,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情构眯,我是刑警寧澤愕难,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站惫霸,受9級(jí)特大地震影響猫缭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜壹店,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一猜丹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧硅卢,春花似錦射窒、人聲如沸藏杖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蝌麸。三九已至,卻和暖如春艾疟,著一層夾襖步出監(jiān)牢的瞬間来吩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工蔽莱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弟疆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓盗冷,卻偏偏與公主長(zhǎng)得像怠苔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子仪糖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348