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
中的email
和password
user.service
添加用户(事务transaction
进行添加)account.service
添加账户password.service
添加密码bcrypt
加密
role.service
添加角色
- 超级用户配置:
- 使用
initialize
方法
- 前端
- 调用
checkToken
接口验证token
,若token
成功,存储user
数据并路由跳转到menu
- 不使用
localStorage
,因为容易受到xss
攻击,而cookie
容易受到csrf
攻击只需要在后端判断refer
;csrf
攻击:用户登陆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
,包括token
、domain
、httpOnly
(不能在用js
删除cookie
)、path
、expires
- 用户表:
_id
username
email
emailActive
:邮箱是否激活roleId
changePasswordTimes
:更改密码次数
- 账户表:
_id
userId
account
:username
或email
wrongTime
:输入密码错误次数
- 密码表:
_id
userId
password
- 角色表
_id
roleId
roleName
- 验证码表
_id
captcha
captchaId
createdDate