egg点滴知识
文章平均质量分 90
egg点滴知识
弹琴弹琴
这个作者很懒,什么都没留下…
展开
-
eggjs 项目实践
架构:eggjs + egg-jwt + egg-sequelize + egg-validate数据库:mysql实现功能:登录、验证码、权限菜单、鉴权、角色、用户、上传、下载、错误统一处理api格式: restful + json项目目录app->controller->base_controller.jsconst { Controller } = require('egg');class BaseController extends Controll.原创 2021-11-10 11:59:12 · 1630 阅读 · 1 评论 -
egg实现登录鉴权(八):sequelize联表查询
表之间的关联关系有三种:一对一,一对多,多对多。要进行多表操作,首先要建立表与表之间的关联关系,在sequelize中分别使用hasOne,hasMany和belongsToMany表示以上三中关系。例如我们要建立user表与role表的多对多的关联,可以这样写,首先要建立外键(当然也可以在两张表之间建立中间表)本文主要完成多表操作简单的部分,熟悉在多表中建立关联关系并且可以完成简单的联表操作,以联表查询为例。需求登录成功时返回结果中要包含角色信息,以便展示对应的权限菜单查询用户时返回...转载 2021-10-28 17:48:03 · 1084 阅读 · 0 评论 -
egg实现登录鉴权(六):角色树的CRUD操作
前面已经完成角色树的存储并且能够查询并构建出树形数据,本文继续完成角色树的其他操作,可以插入,删除和修改等常规操作。需求查询不鉴权,增删改需要传token能够通过id查询角色,返回该角色下面所有角色树。插入新角色,可以另开一个组织架构,即该角色没有上级修改角色和删除角色,修改和删除角色时要判断该角色是否存在,修改角色分两种情况修改角色名称,不改变结构修改上级id,修改该角色上级时,该角色的下级默认一并带入;删除角色时如果有下级则一并删除约定名次解释:id:角...转载 2021-10-28 16:54:33 · 278 阅读 · 0 评论 -
egg实现登录鉴权(七):权限管理
权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属角色的访问页面的数据访问的权限需求先不考虑数据权限,实现页面权限和功能权限。将两个权限存到menu表中,参考role表,以树形结构存储不支持新增和删除编辑修改结构修改名称查询以树形结构返回菜单,不包含操作包含操作,剪除叶子约定获取菜单树(GET)传参...转载 2021-10-28 16:51:24 · 786 阅读 · 0 评论 -
egg实现登录鉴权(五):mysql表中存储树形结构数据
需求在mysql表上实现树形结构数据的存储实现树形数据的查询,返回json格式的树形数据实现mysql表中存储树形结构通常有四种方法,本文采用第一种即每条记录加表示上级id的pid字段数据库表role结构,用户名:root,密码:123456,数据库:test代码基本上和之前的一样,主要实现一维的对象数组转化为树形数组config目录下config.default.js和plugin.js都没变app/model/role.js 'use str...转载 2021-10-28 16:18:13 · 367 阅读 · 0 评论 -
egg实现登录鉴权(四):人员新增和密码修改
需求新增人员请求header中需加token新增直接传nickname,nickname不重名password默认是123456的md5加密密文修改密码请求header中需加token传参:新密码实现代码基本上没有改动,只需要改动路由(router.js),控制器(controller),服务(service)以下几项都和前一篇(egg实现登录鉴权(三):密码的md5加密及验证)相同数据库依赖包config/config.default.j...转载 2021-10-28 16:00:11 · 372 阅读 · 0 评论 -
egg实现登录鉴权(三):密码的md5加密及验证
用户登录少不了密码,上一篇只用nickname进行验证。这一篇加上使用md5加密的password作为另一个条件进行登录验证。需求通过nickname和password(md5加密后)进行验证登录,查询数据库user表验证nickname和password存在nickname并且password解密后与数据数据对应成功则生成token返回反之返回{code:400,msg:'登录失败'}为了方便操作,加入了一个字符串md5加密的接口(user/getMd5/:data)...转载 2021-10-28 15:43:05 · 1183 阅读 · 0 评论 -
egg实现登录鉴权(二):连接数据库(mysql)
前一篇实现了基本的生成token和验证token的功能,这其实并没什么用。这一篇主要实现对数据库里的人员进行验证。需求登录:查询数据库的user表验证该人员是否存在user表中存在该nickname,生成token返回user表中不存在该nickname,返回{code:'404',msg:'不存在该人员'}查询查询所有user,无需传token通过id查询指定user,需要传token状态码201:成功404:不存在400:业务逻辑错误...转载 2021-10-28 15:16:03 · 473 阅读 · 0 评论 -
egg实现登录鉴权(一):生成token
项目地址https://github.com/XingGuoZM/egg-proj开发环境node v12.10.0第一步:确保项目能跑起来mkdir egg-proj && cd egg-projnpm init egg --type=simplenpm installnpm run dev遇到需要选择的地方回车即可第二步:安装依赖包安装插件npm install --save egg-cors egg-jwt...转载 2021-10-28 15:14:54 · 872 阅读 · 0 评论 -
egg框架(用户鉴权,token验证,以及前端简略配置)
最近在研究阿里出的egg,想写一个后台管理系统,但是用了egg–nunjucks之后,感觉它的模板渲染很僵硬,模板页面无法直接调用service的方法来操作数据库,但是用常规的form表单提交到路由,感觉又很奇怪,还是要请求api,那我为什么不前后端分开来写呢,就只好用它来写api,用vue来写前端了,当然也可能是我没有找到正确的打开方式,希望各位有懂的话留言告诉我一下,谢谢????。后端:1.安装egg-jwtnpm i egg-jwt -S2.在config文件夹中的plugin.js文转载 2020-10-22 16:10:51 · 1465 阅读 · 0 评论 -
node,js,egg打包exe,跨平台问题处理
一直想实现打包的功能终于网上有个靠谱的链接了:https://www.jianshu.com/p/02a6e99d7b94but 按照文档进行总是出现不能正常运行!!!终于还是解决问题了,感谢:MrSmallLiu/pkg-egg-example的作者的帮助!环境:win10 ,node 8.16.1,npm-pkg 6.4.1 打包成 exe1.上面链接基本上都可以完成打包exe可能问题a:?? AssertionError [ERR_ASSERTION]: D:\snap..转载 2020-10-21 14:29:26 · 1414 阅读 · 0 评论 -
使用pkg打包Egg.js项目 Egg.js线上部署
使用pkg打包egg.js项目pkg原理 安装pkg 配置egg.js临时文件目录 修改package.json文件 配置打包入口文件pkg-build.js 打包发布 部署启动pkg原理pkg打包工具主要会按平台(支持window、mac、linux)分别打包。pkg中会包含node的可执行文件,还会包含你要打包进去的代码。代码通过一个虚拟的文件系统把所有的代码和资源文件都挂载到 /snapshot/${被打包项目的文件夹名} 下面(pkg hack了 fs 的很多方法,拦截.转载 2020-10-21 12:19:41 · 2628 阅读 · 2 评论 -
egg-sequelize使用教程
egg-sequelize教程,保存查询、修改、删除、新增,多表查询modaluserimport { Application } from 'egg';import * as uuidv4 from 'uuid/v4';/** 用户资料表,修改邮箱和手机号时,需要同步到userAuth表 */export default function(app: Application) { const { STRING, BOOLEAN, DATE, UUID, ARRAY } = ap.转载 2020-10-20 14:38:53 · 4305 阅读 · 0 评论 -
egg-sequelize 时间问题
时间存储问题mysql保存时会自动保存为UTC格式,可以在config中配置:exports.sequelize = { dialect: 'mysql', .... timezone: '+08:00' // 保存为本地时区 }但是egg-sequelize在读取时间时,还是会返回UTC格式,还需要改一下配置,添加:exports.sequelize = { dialect: 'mysql', .... timezone:..原创 2020-09-28 16:40:37 · 1781 阅读 · 0 评论