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

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

 更新時間:2020年03月04日 10:39:09   作者:小新而已  
在本篇文章里小編給大家整理的是關于Vue+Vuex實現(xiàn)自動登錄的知識點詳解,需要的朋友們可以學習下。

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

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

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

基于以上兩點,我們對代碼進行修改:

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

@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直接生成隨機的token,為了用respBean傳遞回去數(shù)據(jù),因此傳遞回去的對象除了狀態(tài)信息和消息之外,還需要多加一個token:

RespBean對象代碼為:

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

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

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

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

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

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ā)出的不大一樣,對應不上,而這樣的原因是:我們當時為了使用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'
  }
 });
}

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

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

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('請求失敗', '失敗!');
    }
   })
  }
 }
});

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

以上就是Vue+Vuex實現(xiàn)自動登錄的知識點詳解的詳細內(nèi)容,更多關于Vue+Vuex實現(xiàn)自動登錄的資料請關注腳本之家其它相關文章!

相關文章

  • Vue自定義指令介紹(2)

    Vue自定義指令介紹(2)

    這篇文章主要為大家詳細介紹了Vue自定義指令,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Vue+Antv?F2實現(xiàn)混合圖表

    Vue+Antv?F2實現(xiàn)混合圖表

    這篇文章主要為大家詳細介紹了Vue+Antv?F2實現(xiàn)混合圖表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 淺談vue?腳手架文件結構及加載過程

    淺談vue?腳手架文件結構及加載過程

    這篇文章主要介紹了vue腳手架文件結構及加載過程淺談,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Vue+ElementUi實現(xiàn)點擊表格中鏈接進行頁面跳轉與路由詳解

    Vue+ElementUi實現(xiàn)點擊表格中鏈接進行頁面跳轉與路由詳解

    在vue中進行前端網(wǎng)頁開發(fā)時,通常列表數(shù)據(jù)用el-table展示,下面這篇文章主要給大家介紹了關于Vue+ElementUi實現(xiàn)點擊表格中鏈接進行頁面跳轉與路由的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • Vue 使用計時器實現(xiàn)跑馬燈效果的實例代碼

    Vue 使用計時器實現(xiàn)跑馬燈效果的實例代碼

    這篇文章主要介紹了Vue 使用計時器實現(xiàn)跑馬燈效果,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-07-07
  • 深入理解Vue 組件之間傳值

    深入理解Vue 組件之間傳值

    這篇文章較詳細的給大家介紹了vue組件之間傳值的方法,在 Vue 中,可以使用props向子組件傳遞數(shù)據(jù)。具體傳遞方法大家跟隨腳本之家小編一起看看吧
    2018-08-08
  • 詳解vue-cli中的ESlint配置文件eslintrc.js

    詳解vue-cli中的ESlint配置文件eslintrc.js

    本篇文章主要介紹了vue-cli中的ESlint配置文件eslintrc.js詳解 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • vue2.0使用md-edit編輯器的過程

    vue2.0使用md-edit編輯器的過程

    這篇文章主要介紹了vue2.0+使用md-edit編輯器的解決方案,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-02-02
  • vue 動態(tài)改變靜態(tài)圖片以及請求網(wǎng)絡圖片的實現(xiàn)方法

    vue 動態(tài)改變靜態(tài)圖片以及請求網(wǎng)絡圖片的實現(xiàn)方法

    下面小編就為大家分享一篇vue 動態(tài)改變靜態(tài)圖片以及請求網(wǎng)絡圖片的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Element-UI控件Tree實現(xiàn)數(shù)據(jù)樹形結構的方法

    Element-UI控件Tree實現(xiàn)數(shù)據(jù)樹形結構的方法

    這篇文章主要介紹了Element-UI控件Tree實現(xiàn)數(shù)據(jù)樹形結構,本期介紹添加、修改等功能也比較簡單,可以通過element-ui的$prompt彈框控件來實現(xiàn),需要的朋友可以參考下
    2024-01-01

最新評論

五家渠市| 敦化市| 阿鲁科尔沁旗| 大埔县| 赣州市| 江达县| 兴隆县| 香河县| 江达县| 六枝特区| 河北区| 沁源县| 大方县| 古交市| 六枝特区| 安图县| 平江县| 青田县| 定兴县| 新田县| 靖江市| 咸阳市| 霍邱县| 井研县| 曲水县| 确山县| 卓尼县| 沾化县| 望都县| 合作市| 花莲市| 弋阳县| 镇康县| 墨脱县| 奉化市| 徐汇区| 武安市| 朔州市| 江门市| 舒城县| 巴彦淖尔市|