开始做一个koa+mongodb项目(三)实现权限登录(带验证码)
2020.03.28一、 在admin.js写逻辑判断Session上周搭建好了后台基本页面,这周开始实现登录以及权限验证啦。一、 在admin.js写逻辑判断//权限判断判断是否登录if(ctx.session.userinfo){await next();}else{//==就是 并存 关系//如果没有登录就跳转...
2020.03.28
上周搭建好了后台基本页面,这周开始实现登录以及权限验证啦。
基本逻辑:
登录——把用户信息保存在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、用到的表
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项目(四)实现用户管理
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐




所有评论(0)