koa中使用jwt进行用户验证

koa中jwt的使用

什么是jwt

JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties.

koa中使用jwt

  1. node中的jwt
    可以使用jsonwebtoken库进行jwt的生成与解密等操作。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import jwt from 'jsonwebtoken'
    import util from 'util'
    const verify = util.promisify(jwt.verify)
    // expire setting: https://github.com/zeit/ms
    //加密方法
    const signJWT = (token, key, expire) => {
    return jwt.sign(token, key, {expiresIn: expire})
    }
    //验证方法
    const verifyJWT = (token, key) => {
    return verify(token.split(' ')[1], key)
    }
  2. koa服务端
    在koa中引入koa-jwt中间件来自动处理路由访问时的jwt认证,可以将无需认证的url放到unless方法中。

    1
    2
    3
    4
    5
    6
    7
    8
    import Koa from 'koa'
    import jwtKoa from 'koa-jwt'
    const app = new Koa()
    app.use(jwtKoa({secret: secret_key}).unless({
    path: [
    /^\/auth\/count/,
    ] //数组中的路径不需要通过jwt验证
    }))
  3. 前端请求
    在前端请求时,需要在请求的head中添加授权字段”Authorization”,值为以”Bearer “的格式添加身份验证的信息。代码实现时可以使用诸如axios的拦截器或者js实现请求head中相关数据的自动添加。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    axios.interceptors.request.use(
    config => {
    let token = getToken()
    if (token) {
    config.headers.Authorization = 'Bearer ' + token
    }
    return config
    },
    err => Promise.reject(err)
    )
文章目录
  1. 1. 什么是jwt
  2. 2. koa中使用jwt
|