1、介绍
cookies中文意思就是小点心的意思,作用可以记录用户信息,在同一个域下cookies是共享的它用来保存用户的数据(账号、密码等)
2、cookies的方法
ctx.cookies.set("name","value") //设置cookies中name和value值ctx.cookies.get("name") //获取cookies中的属性名为name的属性值
3、通过cookies来完成登录验证
3-1 案例要求、功能
1、必须通过登录去访问home页面,如果账号密码不对,则停留在的登录页面2、直接访问home页面,就返回登录页面
3-2 代码
安装依赖
yarn add koa koa-router art-template koa-art-template
将此项目拆分为配置文件、路由文件、pages文件、主文件入口
3-2-1 主文件
const koa = require("koa")const initProject = require("./config")const app = new koa()initProject(app)app.listen(8080,()=>{console.log("8080端口打开了");})
3-2-2 配置文件
const router = require("../routers/index")const render = require("koa-art-template")const path = require("path")function initProject(app){app.use(async (ctx,next)=>{console.log(ctx.path);//获取前路由地址if(ctx.path == "/login" || ctx.path == "/doLogin"){console.log("1");// 1、在登录路由await next()}else{// 2、不在登录路由if(ctx.cookies.get("login")){ //判断cookies中是否有login有就执行home页面await next()}else{await ctx.redirect("/login") //没有login就返回login页面}}})app.use(router.routes())render(app,{root:path.join(process.cwd(),'pages'),extname:'.html',debug:process.env.NODE_ENV !== 'production'})}module.exports = initProject
3-2-3 路由文件
const router = require("koa-router")()router.get("/login",async ctx=>{// ctx.cookies.set("name","cheng")await ctx.render("login")})router.get("/home",async ctx=>{ctx.body = 'home'})router.get("/doLogin",async ctx=>{// username="cheng" passeord=123456console.log(ctx.query);// 1、username="cheng" passeord=123456 判断登录成功,同时设置cookiesvar {username,password} = ctx.queryif(username == "cheng" && password == "123456"){ctx.cookies.set("login","success")await ctx.redirect("/home")} else{ctx.body = "<script>alert('用户名或密码错误');location.href='/login'</script>"}})module.exports = router
3-2-4 pages文件
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"></head><body><div class="container"><form action="/doLogin" method="get" role="form"><legend>登录页面</legend><div class="form-group"><label for="">用户名</label><input type="text" class="form-control" name="username" placeholder="请输入用户名"></div><div class="form-group"><label for="">密码</label><input type="password" class="form-control" name="password" placeholder="请输入密码"></div><button type="submit" class="btn btn-primary">登录</button></form></div></body></html>
根据ID删除
const {ObjectId} = require("mongodb");var res = await table.deleteOne({_id:ObjectId(_id)})
