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

node登錄生成token并驗證的實現(xiàn)

 更新時間:2024年02月26日 10:56:00   作者:奧特曼  
token校驗作為項目里的必要項,其重要性不言而喻,本文主要介紹了node登錄生成token并驗證的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下

一、基礎(chǔ)概念

"token": 是一個通用的術(shù)語,指代一種用于表示身份、權(quán)限或訪問憑證的數(shù)據(jù)結(jié)構(gòu)。它可以是一個字符串、數(shù)字或其他形式的數(shù)據(jù)。

主要用途:

  • 身份驗證:在身份驗證過程中,用戶提供憑據(jù)(如用戶名和密碼),服務(wù)器驗證憑據(jù)的有效性后會頒發(fā)一個身份驗證令牌給用戶。這個令牌可以是一個長期有效的持久令牌,也可以是一個短期有效的臨時令牌,用于后續(xù)的請求中證明用戶的身份。

  • 授權(quán)訪問:當(dāng)用戶通過身份驗證后,服務(wù)器可以頒發(fā)一個訪問令牌給用戶。這個令牌用于證明用戶被授予了特定的權(quán)限或訪問特定資源的權(quán)利。用戶在后續(xù)請求中使用該令牌來訪問受保護的資源,服務(wù)器會驗證令牌的有效性和權(quán)限。

  • API 訪問:在應(yīng)用程序開發(fā)中,API 令牌通常用于授權(quán)第三方應(yīng)用程序或服務(wù)來訪問特定的 API。開發(fā)者向 API 提供商注冊應(yīng)用程序,并獲得一個 API 令牌,以便在應(yīng)用程序中進行身份驗證和授權(quán),以訪問和使用 API 提供的功能和數(shù)據(jù)。

簡單來說,就是本次登錄的一個憑證,只要你帶著服務(wù)器端返回來的token你就可以訪問當(dāng)前相對應(yīng)的內(nèi)容(具體還需要服務(wù)端來定)。

二、JTW

token本身就是一個加密字符串,但是由自己生成需要考慮到安全性、加密算法等,但我們可以使用插件 例如jsonwebtoken就可以幫助我們token并驗證。

安裝jsonwebtoken

npm install jsonwebtoken

生成token

語法:JWT.sign(數(shù)據(jù),加密字符串, 時間)  

const JWT = require("../../utils/JWT.js")

let token = JWT.sign({ username:'奧特曼',id:123 },'secret', '1day')

驗證token

語法:jwt.verify(生成的token,加密字符串)

jwt.verify(token,'secret')

三、實踐

封裝

const jwt = require('jsonwebtoken')
const secret = "ultraman"http://解密密鑰

const JWT = {
    createToken: (data,time) => { 
        return jwt.sign(data,secret,{expiresIn:time})
    },
    verifyToken: (token) => { 
    // 如果token過期或驗證失敗,將返回false
       try {
        return jwt.verify(token,secret)
       } catch (error) {
        return false
       }
    }
}

module.exports = JWT

登錄接口

 login: async (req, res, next) => { 
        var result = await UserService.login(req.body)
        if (result.length) {
            // 生成token
            const DeepRes = JSON.parse(JSON.stringify(result[0])) 
            delete DeepRes.password
            let token = JWT.createToken({ username: req.body.username,id:result[0]._id }, '1day')
            res.header('Authorization', token)
            res.send({code:200,msg:'登錄成功',data:{token,userInfo:DeepRes}})
        } else {
            res.send({code:500,msg:'賬號或密碼錯誤'})
        }
        console.log(result,'登陸了');
    },

驗證攔截

驗證中用了截取,采用了Bearer  xxxx 的形式,所以做了截取只保留token部分進行驗證。

app.use((req, res, next) => {  
  if (whiteList.includes(req.path)) return next()

  let token = req.get('Authorization')
  if (token) {
    const result = JWT.verifyToken(token.split(' ')[1])
    if (result) {
      next()
    } else {
      res.status(401).send({ code: 401, msg: '登錄信息已失效,請重新登錄' })
    }
  } else { 
    res.send({ code: 500, msg: '未攜帶token' })
  }
  
})

驗證后會把數(shù)據(jù)返回出來,就可以當(dāng)時生成token傳過去的數(shù)據(jù),有了數(shù)據(jù)那么我們就可以自行獲取用戶信息

token獲取個人信息

  getUserInfo: async (req, res, next) => { 
        let token = req.get('Authorization')
        const info = JWT.verifyToken(token.split(' ')[1])
       const userInfo =  await UserService.getProfile(info.id)
        console.log(userInfo, 'userInfo');
        res.send({code:200,msg:'獲取成功',data:{userInfo:userInfo[0]}})
    }

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

相關(guān)文章

  • 詳解使用vscode+es6寫nodejs服務(wù)端調(diào)試配置

    詳解使用vscode+es6寫nodejs服務(wù)端調(diào)試配置

    本篇文章主要介紹了使用vscode+es6寫nodejs服務(wù)端調(diào)試配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 使用Node.js實現(xiàn)一個簡單的FastCGI服務(wù)器實例

    使用Node.js實現(xiàn)一個簡單的FastCGI服務(wù)器實例

    這篇文章主要介紹了使用Node.js實現(xiàn)一個簡單的FastCGI服務(wù)器實例,也可以作為一個比較詳細的Node.js服務(wù)器創(chuàng)建教程,需要的朋友可以參考下
    2014-06-06
  • 使用Nodejs連接mongodb數(shù)據(jù)庫的實現(xiàn)代碼

    使用Nodejs連接mongodb數(shù)據(jù)庫的實現(xiàn)代碼

    這篇文章主要介紹了使用Nodejs連接mongodb數(shù)據(jù)庫的實現(xiàn)代碼,需要的朋友可以參考下
    2017-08-08
  • 解決nodejs報錯Error:EPERM:operation not permitted,mkdir‘xxxxxxxxxxxxxxxx‘

    解決nodejs報錯Error:EPERM:operation not permitted,mkdi

    這篇文章主要介紹了解決nodejs報錯Error:EPERM:operation not permitted,mkdir‘xxxxxxxxxxxxxxxx‘問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Node.js項目依賴問題的詳細解決步驟

    Node.js項目依賴問題的詳細解決步驟

    在現(xiàn)代前端開發(fā)中,Node.js 和 npm 是不可或缺的工具,然而,隨著項目的迭代和依賴包的更新,我們常常會遇到依賴沖突、構(gòu)建失敗等問題,本文將通過一個實際案例,詳細講解如何解決 Node.js 項目中的依賴問題,包括升級 Node.js 和 npm、替換過時的依賴包、修復(fù)構(gòu)建錯誤等
    2025-02-02
  • sublime text配置node.js調(diào)試(圖文教程)

    sublime text配置node.js調(diào)試(圖文教程)

    下面小編就為大家分享一篇sublime text配置node.js調(diào)試(圖文教程),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • node.js中的fs.write方法使用說明

    node.js中的fs.write方法使用說明

    這篇文章主要介紹了node.js中的fs.write方法使用說明,本文介紹了fs.write的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • Node.js學(xué)習(xí)教程之Module模塊

    Node.js學(xué)習(xí)教程之Module模塊

    這篇文章主要給大家介紹了關(guān)于Node.js學(xué)習(xí)教程之Module模塊的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Node.js具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • node.js連接mongoDB數(shù)據(jù)庫 快速搭建自己的web服務(wù)

    node.js連接mongoDB數(shù)據(jù)庫 快速搭建自己的web服務(wù)

    這篇文章主要為大家詳細介紹了node.js連接mongoDB數(shù)據(jù)庫,如何快速搭建自己的web服務(wù),感興趣的小伙伴們可以參考一下
    2016-04-04
  • iOS + node.js使用Socket.IO框架進行實時通信示例

    iOS + node.js使用Socket.IO框架進行實時通信示例

    本篇文章主要介紹了iOS + node.js使用Socket.IO框架進行實時通信示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-04-04

最新評論