亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue+express生成token方式

 更新時間:2024年08月28日 09:20:28   作者:江一銘  
這篇文章主要介紹了vue+express生成token方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

vue+express生成token

在使用vue+node開發(fā)的過程中,在寫登錄時候我們會使用到token驗證,下面我來分享一下express生成token和簡單的使用

安裝

npm install express-jwt
npm install jsonwebtoken --save
  • express-jwt內(nèi)部引用了jsonwebtoken,對其封裝使用。在實際的項目中這兩個都需要引用,他們兩個的定位不一樣。
  • jsonwebtoken是用來生成token給客戶端的,express-jwt是用來驗證token的。

新建token.js文件

//用于生成和解析token
var jwt = require('jsonwebtoken');
var signkey = 'zxcvbnmpoiuy';//自定義秘鑰

exports.setToken = function (phone, pasaWord) {
    return new Promise((resolve, reject) => {
        const rule = {
            phone: phone,
            pasaWord: pasaWord
        }
        // rule 賬號密碼 expiresIn 失效時間
        const token = jwt.sign(rule, signkey, { expiresIn: '1h' });
        resolve(token);
    })
}

exports.verToken = function (token) {
    return new Promise((resolve, reject) => {
        var info = jwt.verify(token.split(' ')[1], signkey);
        resolve(info);
    })
}

app.js中配置

var vertoken = require('./utils/token');
var expressJWT = require('express-jwt');

// 解析token獲取用戶信息
app.use(function (req, res, next) {
// authorization 必須為這個  和前端保持一致
  var token = req.headers['authorization'];

  if (token == undefined) {
    return next();
  } else {
    vertoken.verToken(token).then((data) => {
      req.data = data;
      return next();
    }).catch((error) => {
      return next();
    })
  }
});


//驗證token
app.use(expressJWT({
  secret: 'zxcvbnmpoiuy', // signkey 自定義秘鑰 需跟上方保持一致
  algorithms: ["HS256"]
}).unless({
  path: ['/users/addUsers', "/users/login"]//除了這些地址,其他的URL都需要驗證
}));


// 錯誤處理
app.use(function (err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message
  res.locals.error = req.app.get('env') === 'development' ? err : {}
  // render the error page
  res.status(err.status || 500)

  if (err.status == 401) {
    res.send(httpRequest.untoken())
  } else if (err.status == 404) {
    res.send(httpRequest.notFound())
  } else {
    res.send({ code: err.status, data: {}, msg: err.status })
  }
})

在接口中使用

// token 驗證
var jwt = require('jsonwebtoken');
var Ctoken = require('../utils/token');

router.post('/login', async function (req, res, next) {
  let bady = {
    phone: req.body.phone,
    passWord: req.body.passWord,
  }
  //登錄前查詢數(shù)據(jù)庫有無此賬號
  const data = await User.find().where({
    phone: req.body.phone
  })
  if (data.length == 0) {
    res.send({
      code: 500,
      success: false,
      msg: "該用戶沒有注冊。請先前往注冊"
    })
    return
  }
  // 驗證密碼
  if (data.length != 0 && data[0].passWord !== req.body.passWord) {
    res.send({
      code: 500,
      success: false,
      msg: "密碼錯誤,請重新驗證"
    })
    return
  }

  Ctoken.setToken(bady).then((data) => {
    let CObj = {
      code: 200,
      msg: "登錄成功",
      token: data
    }
    res.json(CObj);
  });
})

錯誤

expressjwt is not a function

版本太高。

只需要將pakage.json中的express-jwt版本改為6.1.1,重新npm i 即可使用。

express-jwt新特性請自行前往npm官網(wǎng)查看。

algorithms should be set

在app.use(expressJWT) 這個配置中添加 algorithms: [“HS256”];

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue實現(xiàn)路由懶加載及組件懶加載的方式

    vue實現(xiàn)路由懶加載及組件懶加載的方式

    懶加載簡單來說就是延遲加載或按需加載,即在需要的時候的時候進(jìn)行加載。這篇文章主要介紹了vue路由懶加載及組件懶加載 ,需要的朋友可以參考下
    2019-06-06
  • Vue2.x通用條件搜索組件的封裝及應(yīng)用詳解

    Vue2.x通用條件搜索組件的封裝及應(yīng)用詳解

    這篇文章主要為大家詳細(xì)介紹了Vue2.x通用條件搜索組件的封裝及應(yīng)用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Vue獲取微博授權(quán)URL代碼實例

    Vue獲取微博授權(quán)URL代碼實例

    這篇文章主要介紹了Vue獲取微博授權(quán)URL代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • vue用vis插件如何實現(xiàn)網(wǎng)絡(luò)拓?fù)鋱D

    vue用vis插件如何實現(xiàn)網(wǎng)絡(luò)拓?fù)鋱D

    這篇文章主要介紹了vue用vis插件如何實現(xiàn)網(wǎng)絡(luò)拓?fù)鋱D,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 詳解vue中router-link標(biāo)簽所必備了解的屬性

    詳解vue中router-link標(biāo)簽所必備了解的屬性

    這篇文章主要介紹了vue中router-link標(biāo)簽所必備了解的屬性,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Vue路由組件傳遞參數(shù)的六種場景

    Vue路由組件傳遞參數(shù)的六種場景

    在Vue應(yīng)用程序中,路由組件是構(gòu)建單頁應(yīng)用的關(guān)鍵部分,傳遞參數(shù)給路由組件可以讓我們動態(tài)地展示內(nèi)容,處理用戶輸入,以及實現(xiàn)各種交互功能,本文就給大家介紹了六種Vue路由組件傳遞參數(shù)場景,需要的朋友可以參考下
    2023-09-09
  • 淺析Vue2和Vue3中雙向綁定機(jī)制的優(yōu)化與差異

    淺析Vue2和Vue3中雙向綁定機(jī)制的優(yōu)化與差異

    Vue.js?核心特性之一就是雙向綁定,本文將深入探討?Vue2?和?Vue3?在雙向綁定上的區(qū)別,并分析這些改進(jìn)對性能和開發(fā)體驗的影響,希望對大家有所幫助
    2024-11-11
  • Vue Form表單的使用方法(rules格式校驗網(wǎng)絡(luò)校驗鍵盤按鍵監(jiān)聽)

    Vue Form表單的使用方法(rules格式校驗網(wǎng)絡(luò)校驗鍵盤按鍵監(jiān)聽)

    本文介紹了在Vue.js中使用表單校驗規(guī)則(rules)進(jìn)行網(wǎng)絡(luò)請求校驗的方法,以及如何通過formRef引用表單對象并進(jìn)行鍵盤按鍵監(jiān)聽,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Vue.js -- 過濾器使用總結(jié)

    Vue.js -- 過濾器使用總結(jié)

    本篇文章主要介紹了Vue.js -- 過濾器使用總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • vuex 第三方包實現(xiàn)數(shù)據(jù)持久化的方法

    vuex 第三方包實現(xiàn)數(shù)據(jù)持久化的方法

    本文主要介紹了vuex 第三方包實現(xiàn)數(shù)據(jù)持久化的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評論