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

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

新建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

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

1. 本站所有免费资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!
2. 本站不保证所提供下载的免费资源的准确性、安全性和完整性,免费资源仅供下载学习之用!如有链接无法下载、失效,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或技术教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
5. 加入前端开发QQ群:565733884,我们大家一起来交流技术!
码云笔记 » P28:后台管理系统开发07-service登录接口编写

发表评论

提供最优质的资源集合

立即查看 了解详情