首页 > 其他分享 >egg.js

egg.js

时间:2023-07-05 14:22:05浏览次数:38  
标签:const jwt app ctx token js catalog egg

引入 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

相关文章

  • 给第一行单元格赋值 + WPS JS获取工作表的总行数 + WPS JS获取工作表的总行数
    戳我,了解更多相关办公的小技巧给第一行单元格赋值1、在计算机中有一种ASCII编码,其中A在计算机中的表示的数字是65,a的ascii码是97,b的ascii码是98。2、从A1到F1可以看到第一个字母在变化,第2个数字始终是1,A的ascii码是65,F的ascii码是70。3、我们定义letter=65,使letter逐渐靠近70即可。......
  • JavaScript发展历史(JS)
    JavaScript发展历史1994年,网景公司(Netscape)发布了Navigator浏览器0.9版,这是世界上第一款比较成熟的网络浏览器,轰动一时。但是这是一款名副其实的浏览器--只能浏览页面,浏览器无法与用户互动,当时解决这个问题有两个办法,一个是采用现有的语言,许他们直接嵌入网页。另一个是发明一......
  • web js 播放rtsp视频流方案
    场景需要在web端预览海康无线摄像头视频流,所以采用海康自身提供的websdk无法使用方案1rtsp流推送到应用服务器,应用服务器再通过ffmpeg推送到nginx,js再去拉流缺点:多了一层转发,造成了一定的延迟方案2通过webRTC方案,使用现有开源插件webrtc-streamerhttps://github......
  • JS实现中英文混合文字友好截取功能
    汉字和数字混合时,按照长度进行字符截取。 <script>/***JS实现中英文混合文字溢出友好截取功能*@paramtext字符串*@paramlength截取长度*/varzfc={};zfc.mixTextOverflow=function(text,length){if(text.replace(/[\u4e00-\u9fa5]/g,'aa......
  • 在线JS代码混淆加密工具真的能实现JS代码加密吗?
    很多时候我们网站的JS代码都有被拷贝的风险,于是JS代码混淆加密这种能避免大部分复制的方法便出现了,可以对自己的JS加密,加密后达到安全的作用,不用担心自己辛辛苦苦写的JS给别人抄袭了。然而一段JS代码要是自己去编辑加密的话就有点费时费力了,目前加密工具也非常多,在线JS代码混淆......
  • vue项目报错:Node.js v18.16.1 error Command failed with exit code 1.
    原因:把node升级到了最新的长期支持版18.16.1,结果运行vue项目启动失败,报错如下:试了各种办法都解决不了,后面只能把node降级到16.20.1运行项目又可以启动了......
  • python解析json数据
    python解析json数据demodata={"name":"John","age":30,"hobbies":["reading","running","swimming"],"scores":[85,90,95]}forkey,valueindata.items()......
  • NestJs NestFactory.create()方法的可选的配置对象
    NestJs是一个用于构建高效、可扩展和可维护的Nodejs应用程序的框架。NestFactory是nestjs框架中的一个重要类,第一个参数接受一个根模块作为参数,第二个参数是一个可选的配置对象,用于配置应用程序实例的行为和属性。这个配置对象可以包含如下属性:logger:指定自定义的日志记录器,用于......
  • 重写JSON.stringify与JSON.parse使其支持解析function类型
    constJSONStringify=(option)=>{returnJSON.stringify(option,(key,val)=>{//处理函数丢失问题if(typeofval==='function'){return`${val}`;}//处理undefined丢失问......
  • 本地搭建Threejs
    目录1、首先进入threejs库GitHub地址:2、下载完整代码3、项目文件解压缩4、命令行安装依赖5、启动项目6、文档目录介绍​ 因为Three.js官网是国外的服务器,所以为了方便学习和快速的查阅文档,我们可以自己搭建Three.js官网和文档,方便随时查看案例和文档内容进行学习。1、首先进......