引入 joi 进行参数校验
按照依赖:
npm install joi
基本使用:
const Joi = require('joi');
const addCatalogSchema = Joi.object({
catalog: Joi.string().required(),
});
module.exports = {
addCatalogSchema,
};
//使用
const ctx = this.ctx;
const { catalog } = ctx.request.body;
// 入参校验
await addCatalogSchema.validateAsync({ catalog });
const data = await ctx.model.Catalog.create({ catalog });
引入 jwt
'use strict';
const BaseController = require('./base');
class UserController extends BaseController {
async login() {
const { ctx, app } = this;
// 获取用户端传递过来的参数
const { username, password } = ctx.request.body;
const user = await ctx.model.User.findOne({ where: { username } });
// 进行验证 data 数据 登录是否成功
if (!user) {
throw {
code: 20001,
message: '用户不存在',
};
}
if (password !== user.password) {
throw {
code: 20002,
message: '密码错误',
};
}
// 生成 token 的方式
const token = app.jwt.sign({
userId: user.id, // 需要存储的 token 数据
// ......
}, app.config.jwt.secret);
// 生成的token =
// 返回 token 到前端
this.ok(token);
}
}
module.exports = UserController;
路由:
'use strict';
/**
* @param {Egg.Application} app - egg application
*/
module.exports = app => {
const { router, controller, jwt } = app;
router.get('/', controller.home.index);
router.post('/login', controller.user.login);
router.get('/catalog', jwt, controller.catalog.find);
router.post('/addCatalog', jwt, controller.catalog.create);
标签:const,jwt,app,ctx,token,js,catalog,egg
From: https://www.cnblogs.com/new-bee-2023/p/17528389.html