上周搭建好了后台基本页面,这周开始实现登录以及权限验证啦。
基本逻辑:
登录——把用户信息保存在session——登录其他页面时判断session是否存在
在这里插入图片描述

一、 在admin.js写逻辑判断

为什么在admin.js写,因为所有的路由页面都会经过admin.js和app.js。
会经过中间件,所以我们把这段逻辑判断写在配置中间件里。

//权限判断  判断是否登录
   if(ctx.session.userinfo){
        await next();
    }else{
     //==就是 并存 关系

        //如果没有登录就跳转
        if(ctx.url=='/admin/login' || ctx.url=='/admin/login/doLogin'){
            await next();

        }else{
          ctx.redirect('/admin/login');
        }
        // console.log(ctx);

    }
})

二、配置koa-Session

1、安装

npm install koa-session --save

2、配置session中间件

(1)网址

https://www.npmjs.com/package/koa-session
在以上官网复制这个片段代码

(2)在app.js里配置

//配置session 中间件  
app.keys = ['some secret hurr'];
const CONFIG = {
    key: 'koa:sess',
    maxAge: 864000,
    overwrite: true,
    httpOnly: true,
    signed: true,
    rolling: true,   /*每次请求都重新设置session*/
    renew: false,
};
app.use(session(CONFIG, app));

运行看看有没有问题,输入localhost其他页面是否均跳转到Login页面,如果不能进后台则权限判断成功。没有问题我们就开始连接数据库。

三、连接数据库

1、用到的表

在这里插入图片描述点击查看MongoDB安装配置

2、接受post数据

(1) 在admin.js 配置router.post

(2)login.html 里的 form表单 修改 method=“post“

(3)配置koa-bodyparser

参考网站:nodejs body-parser 解析post数据

安装

$ npm install body-parser

API

var bodyPaeser =require('body-parser')

四、 配置数据库,md5加密

1、在model文件夹新增tools.js
安装md5

npm install --save md5

此处参考CSND- md5教程
教程地址:https://www.baidu.com/link?url=Yl9lnYTomwrAeswZM4GtW9MzdlCzBBMyAv87AaBddlKoraPcDenHwTo94TTwZbLDj1t2azqpTqallWjaxJm7YX_pNBcxPtKXe8Qf-uN-oKW&wd=&eqid=868cde1f0039b85c000000065e9cb496

//把md5加密方法封装,暴露出去
var md5 = require('md5')

exports.MD5 = function(val,solt){
    return new Promise((resolve, reject)=>{
        var passSolt = md5(md5(val)+solt);
    resolve(passSolt );
})
}

2、然后在需要使用的页面调用tools.js中的加密方法

3、再把db.js、config.js文件放入model文件夹

五、生成验证码

生成验证码:svg-captcha
官网:https://www.npmjs.com/package/svg-captcha
具体安装和配置看官网,
size就是验证码长度,随后是字体大小高度宽度背景颜色等,可以自行调整,官网里还有验证码的不同方式,有字母验证,加法验证。
API

const captcha = svgCaptcha.create( 
{ 
size:4, 
fontSize: 50, 
width: 100, 
height:40, 
background:"#ffffff" 
}); 
ctx.session.code=captcha.text; 
ctx.response.type = 'image/svg+xml'; 
ctx.body=captcha.data;

下一章:
开始一个Koa+mongodb项目(四)实现用户管理

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐