后台项目 Express-Mysql-Vue3-TS-Pinia 登录逻辑

169 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第25天,点击查看活动详情

后台项目 Express-Mysql-Vue3-Ts-Pinia 登录逻辑

引言

通过之前一段时间 ExpressMysql 的学习

这里尝试来搭建一个 后台系统 来巩固下学习的技术。

注册逻辑完善

上一节处理了注册的逻辑,目前把前端的相关逻辑先搭建起来。

例如

  • 注册完成后跳转到登录页面

  • 登录代码逻辑

注册完成后跳转到登录页面

这个还是很简单的,就是判断返回来的 flagtrue 还是 false

将相关的 message 消息,通过 ElMessage 组件进行通知

之后再将页面状态切换为 登录状态即可。

image.png

当然这个位置也可以添加,例如 自动登录,或者 自动将用户名保存,直接输入密码的逻辑。

登录代码逻辑

首先处理后端的代码逻辑

  • 判断当前用户名是否存在

    • 如果不存在,则返回 《用户名不存在,请先注册》

    • 若存在,在查询密码是否正确

      • 若不正确,则返回 《密码错误,请重新输入密码!》

      • 正确,则返回 《登录成功!》

  • 其次添加一个新的sql语句,查询用户名和密码是否正确

    const selectLoginUser = `select * from user where username=? && password=?;`
    
  • 定义接口为 /api/user/login

下面是主要的代码逻辑

const login = (req, res, next) => {
  try {
    const { username, password } = req.query

    const sql = sqlAll.selectUsername
    const sqlArr = [username]

    const sql2 = sqlAll.selectLoginUser
    const sqlArr2 = [username, password]

    const callback = (error, results) => {
      if (error) {
        console.log('连接出错')
        return
      }

      if (results.length === 0) {
        // 用户名不存在
        res.send({
          code: 200,
          data: {
            message: '用户名不存在,请先注册',
            flag: false
          }
        })
      } else {
        sqlConnect(sql2, sqlArr2, callback2)
      }
    }

    const callback2 = (error, results) => {
      if (error) {
        console.log('连接出错')
        return
      }

      if (results.length === 0) {
        // 密码错误
        res.send({
          code: 200,
          data: {
            message: '密码错误,请重新输入密码!',
            flag: false
          }
        })
      } else {
        // 登录成功
        res.send({
          code: 200,
          data: {
            message: '登录成功!',
            flag: true
          }
        })
      }
    }

    sqlConnect(sql, sqlArr, callback)
  } catch (err) {
    next(err)
  }
}

处理完后端的逻辑后,在前端登录的位置处增加访问该登录的 api 接口 逻辑

判断返回的 flag 的值

  • 如果为 false,则表示 登陆失败,并提示相关信息

  • 如果为 true,则表示 登陆成功,并提示相关信息

    • 后续还需要 token 的校验

    • 以及成功后,跳转到工作台

image.png

总结

通过 Express-Mysql-Vue3-TS-Pinia 做出一个 后台系统 项目,登录 的 前后端 逻辑处理。