1- login登录功能的实现
login.js
const Router = require("koa-router");const router = new Router();router.get("/login",async ctx=>{ if(ctx.cookies.get('login')){ await ctx.redirect('/m1') }else{ await ctx.render("login") }})module.exports = router;
login.html
<form action="/m1/doLogin" method="POST" role="form"> <legend>登录</legend> <div class="form-group"> <label for="">用户名</label> <input type="text" class="form-control" name="username" id="" placeholder="请输入用户名"> </div> <div class="form-group"> <label for="">密码</label> <input type="text" class="form-control" name="pwd" id="" placeholder="请输入密码"> </div> <button type="submit" class="btn btn-primary">登录</button></form>
doLogin.js
POST /m1/doLogin// 查询数据库router.post("/m1/doLogin",async ctx=>{ /* username,pwd */ var {username,pwd} = ctx.request.body; var res = await UserModel.find({username:username,pwd:Number(pwd)}); console.log(res) /* 根据res的长度判断用户名和密码是否正确 */ if(res.length){ ctx.cookies.set("login",true) ctx.redirect("/m1") }else{ ctx.body = "<script>alert('用户名或密码错误');location.href='/login'</script>" }})
2- 使用cookies实现登录拦截
index.js
app.use(async (ctx,next)=>{ var url = ctx.request.url; console.log(url) if(url =="/login" || url =="/m1/doLogin"){ await next(); }else{ if(ctx.cookies.get("login")){ await next() }else{ ctx.redirect("/login") } }})
3- 退出登录
router.get("/m1/logout",async ctx=>{ ctx.cookies.set("login",null); ctx.redirect("/login")})
4- 注册
const Router = require("koa-router");const router = new Router();const UserModel = require('../../models/User')router.post("/m1/doRegister",async ctx=>{ var {username,pwd} = ctx.request.body var data = new UserModel({username,pwd:Number(pwd)}) var res = await UserModel.find({username}) if(res.length){ ctx.body="<script>alert('用户名已存在'); location.href='/register'</script>" }else{ data.save(err=>{ if(err) {throw err} }) ctx.cookies.set("login",true) ctx.redirect('/m1') }})module.exports = router;