sau交流学习社区--songEagle开发系列:Vue.js + Koa.js项目中使用JWT认证

 

一、前言

JWT(JSON Web Token),是为了在网络环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519)。

JWT不是一个新鲜的东西,网上相关的介绍已经非常多了。不是很了解的可以在网上搜索一下相关信息。

同步

// /server/api/admin/admin.controller.jsconst jwt = require('jsonwebtoken'); const config = require('../../config/config');  exports.login = async(ctx) => {   // ...  if (hashedPassword === hashPassword) {     // ...    // 用户token    const userToken = {       name: userName,       id: results[0].id     };     // 签发token    const token = jwt.sign(userToken, config.tokenSecret, { expiresIn: '2h' });     // ...  }   // ...}
复制代码

 

2. 添加中间件校验JWT、

复制代码
// /server/middlreware/tokenError.jsconst jwt = require('jsonwebtoken'); const config = require('../config/config'); const util = require('util'); const verify = util.promisify(jwt.verify);  /**  * 判断token是否可用  */ module.exports = function () {   return async function (ctx, next) {     try {       // 获取jwt      const token = ctx.header.authorization;        if (token) {         try {           // 解密payload,获取用户名和ID          let payload = await verify(token.split(' ')[1], config.tokenSecret);           ctx.user = {             name: payload.name,             id: payload.id           };         } catch (err) {           console.log('token verify fail: ', err)         }       }       await next();     } catch (err) {       if (err.status === 401) {         ctx.status = 401;         ctx.body = {           success: 0,           message: '认证失败'         };       } else {         err.status = 404;         ctx.body = {           success: 0,           message: '404'         };       }     }   } }
复制代码

 

3. Koa.js中添加JWT处理

此处在开发时需要过滤掉登录接口(login),否则会导致JWT验证永远失败。

复制代码
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信