1.2.16 • Published 7 years ago

@ne_fe/koa-auth v1.2.16

Weekly downloads
45
License
ISC
Repository
-
Last release
7 years ago

简介

koa2中间件,主要作用是校验签名.内部集成了jwt的签名,解签及Koa2和egg中间件

安装&配置

npm i @ne_fe/koa-auth -S

使用

引用koa-auth

const { jwt,utils } = require('@ne_fe/koa-auth');

use jwt.sign

jwt.sign(payload[,exp]);
参数下级参数类型是否必传说明
payloadObjecttrue加密的主体
_idStringtrue用户唯一id
ipStringtrue用户ip地址,可以使用 utils.getIp(ctx)得到
*Anyfalse自定义参数
expString|Numberfalse失效时间 默认为30m

详细的时间参数请见jsonwebtoken

use jwt.verify

jwt.verify(token);
参数类型是否必传说明
tokenStringtrue签名后的字符串

use jwt middleware

Koa中中间件用法

app.use(jwt.middleware(config[,callback]));
// 如果签名成功,则会在ctx增加user属性--> ctx.user
参数下级参数类型是否必传说明
configObjecttrue中间件的配置信息
matchString|Array|RegExpfalseurl黑名单,只有匹配该名单的url才需要校验,默认'/',即所有url都需要验签
exceptString|Array|RegExpfalseurl白名单,匹配该名单的url不需要校验,如果 "match"和"except"同时存在,则只生效match
ipBooleanfalse校验时,是否需要匹配IP,默认true
callbackFunctionfalse在解签成功后,会触发回调函数,如果回调函数返回值为false,则会抛出401错误;callback中可以放置自定义校验规则

Egg用法

在 middleware 文件中增加auth.js(文件名可以任意命名)文件

const { jwt } = require('@ne_fe/koa-auth');
module.exports = jwt.middleware;

如果想添加回调函数,则需要转换下
module.exports = options=>{
  return jwt.middleware(options,callback);
}

在 config.default.js 文件中

这里(auth)名称要和middleware中的(auth.js)文件名一样,当然你也可以使用任何命名,只要保持一致即可

config={
    middleware:['auth'...],
    // 这里的配置和koa中间件配置一致
    auth:{
        match:'',
        except:'',
        ip:true,
    },
}

将老代码改为使用koa-auth

在controller/serverAdmin.js文件中

postLogin方法内,修改签名方式
const { jwt, utils } = require('@ne_fe/koa-auth');
....
const token = jwt.sign({
  _id: admin._id,
  ip: utils.getIp(ctx,{xRealIp:false}),
}[,exp]);//在签名的时候,如果想延长签名失效时间,可以传入exp参数