使用nodejs做一个登录校验,在我的印象中nodejs语言做的事情最多的就是和http相关,话不多说,先介绍:
// cookie是什么
// 1 存储在浏览器中的一段字符串 最大5kb
// 2 每一个域可有一个cookie 跨域不共享
// 3 格式如k1 = vi; k2 = v2;(可结构化)
// cookie会随http请求传递给服务端
// 服务端可以修改cookie在返回给前端
// 默认跨域不可以传递cookie
// 服务端操作cookie
// 设置cookie
// 获取cookie
// 结构化cookie
//前端传入cookie的时候是追加而不是覆盖 (除了建相同的情况下)
//cookie 如何应用于登录校验
// 1 请求登录接口 成功则设置cookie 如user=zhangsan
// 2 前端再请求其他接口 就会带着上述的cookie
// 3 服务端判断cookie有无user=zhangsan 即可验证
// cookie不能暴露用户名
// cookie中不能存放明文
// 解决方案 cookie存一个用户标识 如userId=123
// session是什么
// 1 cookie存储用户标识
// 2 用户信息则存储到session中
// session即用户信息的存储 和cookie有对应关联
上代码:
// // 服务端操作cookie
// const http = require('http')
// const server = http.createServer((req, res) => {
// //设置cookie
// res.setHeader('Set-Cookie', 'b=200')
// //获取cookie
// const cookieStr = req.headers.cookie
// console.log('cookie is', cookieStr);
// //结构化cookie (概念很重要) 就是把cookie字符串变成对象的形式
// //querystring
// //cookieStr: 'a=100;b=200' --> {a:'100',b:'200'}
// const cookieObj = {}
// cookieStr.split(';').forEach(cookieItemStr => {
// const arr = cookieItemStr.trim().split('=')
// const key = arr[0] //'a'
// const val = arr[1] //'100'
// cookieObj[key] = val
// })
// // querystring url 参数
// console.log('cookie obj is',cookieObj);
// res.end('cookie test')
// })
// server.listen(3000)
// console.log('server listening on 3000 port');
// koa2操作cookie
const Koa = require('koa')
const app = new Koa()
app.use(async (ctx) => {
// 设置cookie
ctx.cookies.set('c', '250')
// 获取cookie
ctx.cookies.get('c')
// 结构化 koa2已经做好了不用管
ctx.body = 'cookie test by Koa2'
})
app.listen(3000)
const server = http.createServer((req, res) => {
const url = req.url //'/index.html?a=100'
const path = url.split('?')[0] //'index.html'
res.end(path)
// 返回域名后的地址 ?之前的
})
server.listen(3000)
console.log('服务正在监听3000port')