亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

Vue+Vuex實現(xiàn)自動登錄的知識點詳解

瀏覽:60日期:2023-02-03 13:35:56

在之前實現(xiàn)的版本中,如果你進(jìn)行測試,可以看到在瀏覽器的local Storage中,確實里面有了我們加入的Authorization,而且如果沒有登錄的話,直接訪問主頁會進(jìn)入登錄頁面。但其實有好幾個問題并沒有解決:

一、我們所加的Authorzation其實并不是從服務(wù)器傳過來的,而是自己的測試:只要服務(wù)器傳過來了200的響應(yīng)狀態(tài)碼,我們就自己加上固定的Authorization

二、我們重新進(jìn)入的時候,判斷條件是只要有Authorization就可以直接進(jìn)入了,但其實應(yīng)該提交給服務(wù)器判斷這個Authorization是否在數(shù)據(jù)庫中,才可以。

基于以上兩點,我們對代碼進(jìn)行修改:

首先就是,我們獲取的token應(yīng)該是從服務(wù)器獲取的,而不是自己給定,因此直接在服務(wù)器上接收到信息后修改:

@RequestMapping(value = '/login',method = RequestMethod.POST) public RespBean login( @RequestBody UserLogin userLogin, Model model ){ if (userService.check(userLogin)){ String token = UUID.randomUUID().toString();// System.out.println(token); userService.autoLog(userLogin,token); return new RespBean('success','登錄成功',token); }else{ return new RespBean('fail','登錄失敗'); } }

這里使用uuid直接生成隨機(jī)的token,為了用respBean傳遞回去數(shù)據(jù),因此傳遞回去的對象除了狀態(tài)信息和消息之外,還需要多加一個token:

RespBean對象代碼為:

public class RespBean { private String status; private String msg; private String token = null;}

各種方法自己加上就好了。

如果仔細(xì)的話,會發(fā)現(xiàn)我們傳進(jìn)來的參數(shù)好像跟上一次的不一樣了,上一次傳遞了兩個用@RequestParam修飾的賬號密碼的String類型的對象,而這一次直接傳遞了一個UserLogin的對象,這是因為我覺得如果要接收表單等信息的話,每一個都使用這樣的一個個參數(shù)會顯得接收參數(shù)很多,而且如果要修改接收的數(shù)值的話,可能需要很多地方都要修改,復(fù)用性太差了。

第二個原因是我們的Controller層應(yīng)該只是最大限度的邏輯表示,而具體怎么添加用戶、怎么鑒別用戶是否登錄等信息,完完全全應(yīng)該交給下層的Service層呀Mapper層呀去做,但如果接收的是這樣的password、username等數(shù)值的話,調(diào)用下一層的時候,我們還需要把這些數(shù)值直接放入,否則就要在Controller層對數(shù)據(jù)進(jìn)行操作,這就破壞層次結(jié)構(gòu)了。

所以,為了解決這個問題,我們可以把所有表單中需要用到的數(shù)據(jù)單獨(dú)封裝成一個對象,這個對象就專門用來接收web的數(shù)據(jù)以及在各個層之間流轉(zhuǎn):

java @Data public class UserLogin { private String username; private String password; }把,這里的@Data注解就是lombok的注解,可以讓我們不用再去創(chuàng)建get、set等方法了。這樣創(chuàng)建完對象以后,我們的登錄操作就可以直接將這樣的對象拿來使用了。

但是,如果你是跟著做下來的,就會遇到跟我一樣的問題:登錄的時候會報錯:

Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token ’username’: was expecting (JSON String, Number, Array, Object or token ’null’, ’true’ or ’false’); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token ’username’: was expecting (JSON String, Number, Array, Object or token ’null’, ’true’ or ’false’)

大概的意思就是說,我們接受的跟發(fā)出的不大一樣,對應(yīng)不上,而這樣的原因是:我們當(dāng)時為了使用get和@RequestParam方法,在api.js中,把獲取到的json數(shù)據(jù)格式,變成了json字符串的格式了,所以就不能使用@RequestBody這樣一個接收json對象的方法來接收了。

因此上一個程序中的api.js改為:

export const postRequest = (url, params) => { return axios({ method: ’post’, url: `${base}${url}`, data: params, // transformRequest: [function (data) { // // Do whatever you want to transform the data // let ret = ’’ // for (let it in data) { // ret += encodeURIComponent(it) + ’=’ + encodeURIComponent(data[it]) + ’&’ // } // return ret // }], headers: { ’Content-Type’: ’application/json;charset=UTF-8’ } });}

詳細(xì)的可以看一下這個文章@RequestBody和@RequestParam的區(qū)別

而第二點,關(guān)于如何實現(xiàn)鑒別token,就是在路由之前的那個方法上,加上傳遞給服務(wù)器以及接收相應(yīng)信息進(jìn)行操作:

router.beforeEach((to,from,next)=>{ if(to.path ===’/login’){ next(); }else { let token = localStorage.getItem(’Authorization’); if(token ===null || token ===’’){ next(’/login’); }else { getRequest(’/autoLog’,{ token:token }).then(resp=>{ if(resp.status == 200){ var json = resp.data; if(json.status==’success’){ next(); }else{ // next(’/login’); } }else{ alert(’請求失敗’, ’失敗!’); } }) } }});

服務(wù)器的處理也就很簡單了,跟上面登錄其實是差不多的,就不再列舉出來了

以上就是Vue+Vuex實現(xiàn)自動登錄的知識點詳解的詳細(xì)內(nèi)容,更多關(guān)于Vue+Vuex實現(xiàn)自動登錄的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 亚洲国产精品网站久久 | 香焦视频在线观看黄 | 玖玖爱在线播放 | 久久久久久九九 | 黄网免费看 | 午夜国产精品久久久久 | 色综合久久六月婷婷中文字幕 | 国产成人精品亚洲午夜麻豆 | 农村寡妇一级毛片免费看视频 | 色婷婷综合久久久中文字幕 | 香蕉视频免费网站 | 狠狠综合久久 | 黄色一级片性生活 | 香蕉视频免费在线播放 | 欧美成人免费videos | 亚洲精品国产专区91在线 | 日韩在线不卡一区在线观看 | 一级一级一级毛片免费毛片 | 在线免费一区二区 | 日本免费二区三区久久 | 91啦在线观看 | 免费网站看v片在线成人国产系列 | 国产成人综合在线观看网站 | 一级黄色日本 | 日韩一级片免费在线观看 | 美国黄色网址 | 激情婷婷综合 | 亚洲色图男人天堂 | 大片免费观看在线视频 | 亚洲在线网 | 在线看免费涩涩视频网 | 三级黄色大片 | 日韩国产在线 | 国产精品任我爽爆在线播放66 | 欧美色视频日本片高清在线观看 | 国产成人精品福利网站人 | 久久精品国产99国产精品澳门 | 中文字幕日韩在线 | 一级韩国aa毛片免费观看 | 黄色影视在线 | 国产精品嫩草影院在线播放 |