P28:后台管理系统开发07-service登录接口编写

目录
文章目录隐藏
  1. 新建 main.js 文件
  2. 中台路由的制作
  3. 登录方法的编写

通过上几节的开发我们已经有了最基础的后台页面,接下来就可以作后台登录的业务逻辑制作了。这节就带大家制作一下中台的登录接口。

新建 main.js 文件

/service/app/controller/admin文件夹下新建一个main.js文件,后台用的接口就都写在这个文件里了,当然你也可以写多个文件,进一步详细划分。

建立好文件后,我们编写下面代码:

'use strict';
const Controller = require('egg').Controller
class MainController extends Controller{
    async index(){
        //首页的文章列表数据
        this.ctx.body='hi api'
    }
}

module.exports = MainController

有了文件主体,下一步可以制作对应的路由了。

中台路由的制作

/service/router文件夹下,新建立一个admin.js文件,用于配置后台接口文件的路由。 路由的代码如下:

module.exports = app =>{
    const {router,controller} = app
    router.get('/admin/index', controller.admin.main.index)
}

路由配置好以后还需要再总的router.js里进行配置,代码如下:

'use strict';
/**
 * @param {Egg.Application} app - egg application
 */
module.exports = app => {
  require('./router/default')(app)
  require('./router/admin')(app)
};

这时候路由就起作用了,然后我们运行命令npm run dev(前提是你打开了本地 MySQL 数据库,不会这个的去我前面教程看具体本地如何见一个数据库)在服务端打开服务,到浏览器预览一下,如果可以顺利在页面输出hi api,说明一切正常了。

路径为:http://localhost:7001/admin/index/

登录方法的编写

然后我们在/service/controller/admin/main.js文件里编写验证登录的方法,代码如下:

//判断用户名密码是否正确
  async checkLogin(){
      let userName = this.ctx.request.body.userName
      let password = this.ctx.request.body.password
      const sql = " SELECT userName FROM admin_user WHERE userName = '"+userName +
                  "' AND password = '"+password+"'"

      const res = await this.app.mysql.query(sql)
      if(res.length>0){
          //登录成功,进行 session 缓存
          let openId=new Date().getTime()
          this.ctx.session.openId={ 'openId':openId }
          this.ctx.body={'data':'登录成功','openId':openId}

      }else{
          this.ctx.body={data:'登录失败'}
      } 
  }

代码解读:既然是登陆肯定要验证后台用户名和密码,ctx.request.body传一个userNamepasswordpassword是我自己使用,所以没必要用MD5加密方式,虽然更安全但是很麻烦,这里我就直接把password取过来进行使用。有了userNamepassword我就可以写sql查询语句了,这个表我们会在后面文章中给大家做出来,通过sql语句我们可以得到一个结果res,这个结果要用await进行等待因为这个结果要从数据库进行查就用this.app.mysql.query

然后我们判断一下res的长度,如果大于0,就说明找到了这条登录记录,即登陆成功了,这是我们要做一个openId传到前台,这个openId就是现在的时间戳,然后做一下ctx筛选,把我们登录状态存到session中,存的就是openId

登录成功了就要返回了,返回ctx.body它是一个对象,一个是提示登陆成功,一个是时间戳openId,这时前台有了时间戳后台也有时间戳,就不用我们再去查询数据库,从而节省很多资源。

登陆失败,我们也要返回一个登录失败状态this.ctx.body={data:'登录失败'},就不需要传入 openId 了。

当然到这儿你还不能看,我们需要把表给他建立起来,打开数据库管理工具,新建一个admin_user

表,打开表添加字段userNamepassword,类型 VarChar,其他不改,保存。然后分别为这两个字段添加值userName: mybj123password:123456

为了防止大家疲劳学习,本文就先到这里,下节我们结合前台实现管理员登录的操作。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » P28:后台管理系统开发07-service登录接口编写

发表回复