国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

koa+jwt實現token驗證與刷新功能

2024-05-06 15:38:36
字體:
來源:轉載
供稿:網友

JWT

JSON Web Token (JWT)是一個開放標準(RFC 7519),它定義了一種緊湊的、自包含的方式,用于作為JSON對象在各方之間安全地傳輸信息。該信息可以被驗證和信任,因為它是數字簽名的。

本文只講Koa2 + jwt的使用,不了解JWT的話請到這里)進行了解。

koa環境

要使用koa2+jwt需要先有個koa的空環境,搭環境比較麻煩,我直接使用koa起手式,這是我使用koa+typescript搭建的空環境,如果你也經常用koa寫寫小demo,可以點個star,方便~

安裝koa-jwt

koa-jwt主要作用是控制哪些路由需要jwt驗證,哪些接口不需要驗證:

import * as koaJwt from 'koa-jwt';//路由權限控制 除了path里的路徑不需要驗證token 其他都要app.use(  koaJwt({    secret: secret.sign  }).unless({    path: [/^//login/, /^//register/]  }));

上面代碼中,除了登錄、注冊接口不需要jwt驗證,其他請求都需要。

使用jsonwebtoken生成、驗證token

執行npm install jsonwebtoken安裝jsonwebtoken

相關代碼:

import * as jwt from 'jsonwebtoken';const secret = 'my_app_secret';const payload = {user_name:'Jack', id:3, email: '1234@gmail.com'};const token = jwt.sign(payload, secret, { expiresIn: '1h' });

上面代碼中通過jwt.sign來生成一個token,

參數意義:

payload:載體,一般把用戶信息作為載體來生成token secret:秘鑰,可以是字符串也可以是文件 expiresIn:過期時間 1h表示一小時

在登錄中返回token

import * as crypto from 'crypto';import * as jwt from 'jsonwebtoken';async login(ctx){ //從數據庫中查找對應用戶 const user = await userRespository.findOne({  where: {   name: user.name  } }); //密碼加密 const psdMd5 = crypto  .createHash('md5')  .update(user.password)  .digest('hex'); //比較密碼的md5值是否一致 若一致則生成token并返回給前端 if (user.password === psdMd5) {  //生成token  token = jwt.sign(user, secret, { expiresIn: '1h' });  //響應到前端  ctx.body = {   token  } }}

前端攔截器

前端通過登錄拿到返回過來的token,可以將它存在localStorage里,然后再以后的請求中把token放在請求頭的Authorization里帶給服務端。

這里以axios請求為例,在發送請求時,通過請求攔截器把token塞到header里:

//請求攔截器axios.interceptors.request.use(function(config) {  //從localStorage里取出token  const token = localStorage.getItem('tokenName');  //把token塞入Authorization里  config.headers.Authorization = `Bearer ${token}`;    return config; }, function(error) {  // Do something with request error  return Promise.reject(error); });

服務端處理前端發送過來的Token

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 韩城市| 息烽县| 堆龙德庆县| 若羌县| 东乌珠穆沁旗| 当涂县| 昭通市| 桦甸市| 西林县| 特克斯县| 无锡市| 普陀区| 腾冲县| 普定县| 常山县| 定襄县| 徐闻县| 镇赉县| 巴南区| 张家港市| 务川| 柳河县| 贞丰县| 孝义市| 通州市| 武冈市| 张家川| 虹口区| 平谷区| 广宗县| 湛江市| 渭南市| 溆浦县| 铁岭市| 伊金霍洛旗| 吉隆县| 康平县| 太仆寺旗| 开封市| 上林县| 昭通市|