一、在koa中使用cookie
cookie是http协议下,服务端或者脚本可以维护客户端信息的一种方式
。
-
储存cookie的值:
ctx.cookies.set(name, value, [options])
-
获取cookie的值:
ctx.cookies.get(name, [options])
-
options常用设置:
1)maxAge
表示从 Date.now() 得到的毫秒数
2)expires
cookie 过期的Date
3)path
cookie 路径, 默认是'/'
4)domain
cookie 域名
5)secure
安全 cookie 设置后只能通过https来传递cookie
6)httpOnly
服务器可访问 cookie, 默认是true
7)overwrite
表示是否覆盖以前设置的同名的 cookie (默认是false
).
如果是 true,是在同一个请求中设置相同名称的所有 Cookie
实际应用中,根据需求设置options参数
入口主文件
主目录/index.js
// 1、用户登录并验证;
// 2、设置cookies保存用户名与密码,免登录
// 3、换肤
const Koa = require("koa");//加载koa
const static = require("koa-static");//加载静态资源
const views = require("koa-views");//加载视图
const Router = require("koa-router");//加载路由
const koaBody = require("koa-body");//加载处理post请求与文件上传模块
const md5 = require("md5");//md5加密
let musicData = require("./data/music.json");//加载音乐数据
// 实例化
let app = new Koa();
let router = new Router();
// 使用中间件
app.use(koaBody());
app.use(static(__dirname+"/static"));
// app.use(views(__dirname+"/views"),{ //写成这样,报错找不到pug, 没注意写顺手了
// extension:"pug"
// });
app.use(views(__dirname+"/views",{
extension:"pug"
}));
// 重定向
router.get("/",ctx=>{
ctx.redirect("/login");
});
// 登录页路由
router.get("/login",async ctx=>{
let cookieInfo = ctx.cookies.get("isLogin");//获取保存的cookie
if (cookieInfo) {
//如果cookie存在
let serverInfo = md5("tom"+"12345");//对登录用户名和密码进行加密
if (serverInfo == cookieInfo) {
//登录的用户名和密码再与存储的cookie比较,如果相等就跳转到列表页
ctx.redirect("/list");
}
}
// 不存在cookie,就进入登录页
await ctx.render("login");
});
//检查页(检测用户登录)
router.post("/checkUser",async ctx=>{
//post提交方式,如果是get方式,用户名与密码会暴露在地址栏(不安全)
// username与pwd是login.pug中用户名与密码的文本输入框的name属性值
// let username = ctx.request.body.username;
// let pwd = ctx.request.body.pwd;
console.log(ctx.request.body);//koa-body中的方法,用来获取参数
// 验证用户名与密码是否正确
if (ctx