Skip to content

symph-joy/joy-admin

Repository files navigation

@symph/joy 后台管理平台

前端路由配置

  • pages下创建文件,自动生成约定式路由

数据库连接

  • typeorm使用mongodb,创建entity实例,具体参见typeorm使用

  • 配置:joy.config.js中配置dbOptions

    dbOptions: {
      type: "mongodb",
      host: "localhost",
      port: 27017,
      database: "test",
      synchronize: true
    }

逻辑

初始化

  • db.service连接数据库
  • initial.service初始化超级用户以及角色
    • 超级用户配置:joy.config.js中配置adminOptions中的emailpassword
    • user.service添加用户(事务transaction进行添加)
      • account.service添加账户
      • password.service添加密码
        • bcrypt加密
    • role.service添加角色
  • 使用initialize方法

登录

  • 前端
    • 调用checkToken接口验证token,若token成功,存储user数据并路由跳转到menu
      • 不使用localStorage,因为容易受到xss攻击,而cookie容易受到csrf攻击只需要在后端判断refercsrf攻击:用户登陆A网站,然后点入诱导链接B网站,B网站可以有一个按钮或者图片,是请求A网站修改用户信息的接口,此时就会带到A网站的cookie信息。还可以再给请求里加一个参数token,两个token,一个表示用户的登录信息,另一个用于表示当前发送请求的域名
    • 输入邮箱或验证码,失去焦点后,在不为空且输入内容变化的情况下请求该账户密码输入错误次数,账户不存在弹窗;错误次数大于等于5次需输入验证码
    • 请求验证码图片,点击后更新
    • 记住密码,作用在于cookie保持rememberExp天,不记住密码只保存exp;页面停留超过exp将有接口层面返回token过期,在joy.config.js中配置tokenConfig
    • 发送输入数据,对密码使用crypto进行md5加密后发送给后端接口
    • 请求成功返回token存入cookie
  • 后端
    • 根据用户或邮箱查询账户是否存在,并返回该用户输入密码错误次数
    • captcha.service使用svgCaptcha创建验证码对象,5min过期,将验证码图片以及id返回给前端
    • login.service验证用户、密码、验证码,正确后,使用fastify插件设置cookie,包括tokendomainhttpOnly(不能在用js删除cookie)、pathexpires

表信息

  • 用户表:
    • _id
    • username
    • email
    • emailActive:邮箱是否激活
    • roleId
    • changePasswordTimes:更改密码次数
  • 账户表:
    • _id
    • userId
    • accountusernameemail
    • wrongTime:输入密码错误次数
  • 密码表:
    • _id
    • userId
    • password
  • 角色表
    • _id
    • roleId
    • roleName
  • 验证码表
    • _id
    • captcha
    • captchaId
    • createdDate

Releases

No releases published

Packages

No packages published