1- login登录功能的实现

login.js

  1. const Router = require("koa-router");
  2. const router = new Router();
  3. router.get("/login",async ctx=>{
  4. if(ctx.cookies.get('login')){
  5. await ctx.redirect('/m1')
  6. }else{
  7. await ctx.render("login")
  8. }
  9. })
  10. module.exports = router;

login.html

  1. <form action="/m1/doLogin" method="POST" role="form">
  2. <legend>登录</legend>
  3. <div class="form-group">
  4. <label for="">用户名</label>
  5. <input type="text" class="form-control" name="username" id="" placeholder="请输入用户名">
  6. </div>
  7. <div class="form-group">
  8. <label for="">密码</label>
  9. <input type="text" class="form-control" name="pwd" id="" placeholder="请输入密码">
  10. </div>
  11. <button type="submit" class="btn btn-primary">登录</button>
  12. </form>

doLogin.js

  1. POST /m1/doLogin
  2. // 查询数据库
  3. router.post("/m1/doLogin",async ctx=>{
  4. /* username,pwd */
  5. var {username,pwd} = ctx.request.body;
  6. var res = await UserModel.find({username:username,pwd:Number(pwd)});
  7. console.log(res)
  8. /* 根据res的长度判断用户名和密码是否正确 */
  9. if(res.length){
  10. ctx.cookies.set("login",true)
  11. ctx.redirect("/m1")
  12. }else{
  13. ctx.body = "<script>alert('用户名或密码错误');location.href='/login'</script>"
  14. }
  15. })

2- 使用cookies实现登录拦截

index.js

  1. app.use(async (ctx,next)=>{
  2. var url = ctx.request.url;
  3. console.log(url)
  4. if(url =="/login" || url =="/m1/doLogin"){
  5. await next();
  6. }else{
  7. if(ctx.cookies.get("login")){
  8. await next()
  9. }else{
  10. ctx.redirect("/login")
  11. }
  12. }
  13. })

3- 退出登录

  1. router.get("/m1/logout",async ctx=>{
  2. ctx.cookies.set("login",null);
  3. ctx.redirect("/login")
  4. })

4- 注册

  1. const Router = require("koa-router");
  2. const router = new Router();
  3. const UserModel = require('../../models/User')
  4. router.post("/m1/doRegister",async ctx=>{
  5. var {username,pwd} = ctx.request.body
  6. var data = new UserModel({username,pwd:Number(pwd)})
  7. var res = await UserModel.find({username})
  8. if(res.length){
  9. ctx.body="<script>alert('用户名已存在'); location.href='/register'</script>"
  10. }else{
  11. data.save(err=>{
  12. if(err) {throw err}
  13. })
  14. ctx.cookies.set("login",true)
  15. ctx.redirect('/m1')
  16. }
  17. })
  18. module.exports = router;