安装依赖
koa有个 koa-jwt 中间件用于 jwt 权限认证,他依赖于 jsonwebtoken
yarn add koa-jwt
编写jwt中间件
// src/main/middleware/jwt.js
import koajwt from 'koa-jwt';
import config from '@main/config';
export default () => {
return koajwt({
secret: config.jwt.secret })
.unless({
path: [
/^\/api\/login/
]
})
};
配置信息在 src/main/config/index.js
中:
export default {
middlewares: [
'globalError',
'jwt'
],
// ... 其他配置
jwt: {
// 秘钥
secret: '666666',
// TOKEN 过期时间,数字单位默认为秒,可以写为:"2 days", "10h"等形式
expiresIn: 60
}
};
我自己写了个自动加载中间件功能,只要把 middleware
目录下的中间件文件名放在配置文件的 middlewares
数组里即可,中间件加载顺序跟数组顺序一致。
登录操作
// src/main/controller/LoginController.js
import Router from 'koa-router';
import koaBodyparser from 'koa-bodyparser'
import UserService from '@main/service/UserService';
let loginRouter = new Router({
prefix: '/api'
});
loginRouter.post('/login', koaBodyparser(), async ctx => {
ctx.body = ctx.renderJson(await UserService.login(ctx.request.body));
});
export default loginRouter;