国产探花免费观看_亚洲丰满少妇自慰呻吟_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

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

圖片精選

主站蜘蛛池模板: 九台市| 康平县| 永年县| 大冶市| 扬州市| 封开县| 江津市| 海安县| 广汉市| 东山县| 太和县| 财经| 额尔古纳市| 石嘴山市| 诸暨市| 莱西市| 平塘县| 鲜城| 通榆县| 大余县| 昌平区| 雅安市| 大厂| 平度市| 永顺县| 定襄县| 雅安市| 乌兰浩特市| 汾阳市| 义乌市| 思茅市| 泰顺县| 班玛县| 上虞市| 丹凤县| 潮州市| 巩义市| 新巴尔虎左旗| 醴陵市| 岳普湖县| 板桥市|