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
传一个userName
和password
,password
是我自己使用,所以没必要用MD5
加密方式,虽然更安全但是很麻烦,这里我就直接把password
取过来进行使用。有了userName
和password
我就可以写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
表,打开表添加字段userName
、password
,类型 VarChar,其他不改,保存。然后分别为这两个字段添加值userName: mybj123
,password:123456
。
为了防止大家疲劳学习,本文就先到这里,下节我们结合前台实现管理员登录的操作。
码云笔记 » P28:后台管理系统开发07-service登录接口编写