动态服务器(Cookie session)

1.什么叫动态服务器

动态服务器就是访问数据库,静态服务器不访问数据库.

2.实现用户注册

2.1目标

用户注册一个账号,数据库增加一条数据

2.2思路

1.前端创建一个form表单,用户提交账号密码
2.前端监听submit事件
3.前端发送post请求,数据位于请求体
4.后端接收post请求
5.后端获取到账号和密码
6.后端储存数据

2.3代码实现

前端代码
//创建form表单
    
//提交按钮
//引用jquery
后端代码(node写的)
else if (path === '/register' && method === 'POST') {
    response.setHeader('Content-Type', 'text/html;charset=utf-8')
    const userArray = JSON.parse(fs.readFileSync("./db/users.json"))
   //把上传的数据放在数组里面,用户有可能分段上传数据
    const array = []
    //监听上传的数据
    request.on('data', (chunk) => {
      array.push(chunk)
    })
    request.on('end', () => {
     //不同的数据合成字符串
      const string = Buffer.concat(array).toString()
     //变成对象 
      const obj = JSON.parse(string);
     //ID为最后一个人的用户
      const lastUser = userArray[userArray.length - 1]
      const newUser = {
        //id 为最后一个人用户的id+1
        id: lastUser ? lastUser.id + 1 : 1,
        name: obj.name,
        password: obj.password
      };
      userArray.push(newUser)
      //新的写到数据库里面
      fs.writeFileSync('./db/users.json', JSON.stringify(userArray))
      response.end('很好')
    })
image.png

3.实现用户登录

3.1目标

1.首页home.html,当用户登录成功后可以显示用户的账号
2.登录页sign_in.html,用户提交账号和密码
3.如果登录成功跳转首页

3.2实现思路

1.前端创建一个form表单,用户提交账号密码
2.前端监听submit事件
3.前端发送post请求,数据位于请求体
4.后端接收post请求
5.后端获取到账号和密码
6.后端看是不是可以匹配到账号和密码
可是如果能匹配,后端需要标记已经登录,可是怎么标记?碰到问题了,所以目标应该小一点,标记已经登录,需要实现这个目标我们不得不说到cookie

4.1cookie

4.2Cookie定义

Cookie(也叫 Web Cookie 或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,浏览器必须保存这个Cookie,之后发起相同二级域名请求时,必须带上这个Cookie.Cookie就像公园的门票,有门票就是已经登录.

4.3创建Cookie

服务器使用 [Set-Cookie] 响应头部向用户代理(一般是浏览器)发送 Cookie信息。一个简单的 Cookie 可能像这样:

Set-Cookie: =

4.4home.html如何知道谁登录了

可以用数据库里的id

[{"id":1,"name":"1111","password":"2222"},{"id":2,"name":"1111","password":"2222"},{"id":3,"name":"1111","password":"2222"},{"id":4,"name":"111","password":"44444"},{"id":5,"name":"1111","password":"2222"},{"id":6,"name":"2222","password":"5555"}]

可是问题来了,用户可以修改id,怎么解决这个问题?

5.防止篡改ID

5.1思路一:加密

将id加密发送给前端,后端读取id时解密,此方法可行,存在安全漏洞(加密后的内容可以无期限使用)解决办法:JWT

5.2把信息隐藏在服务器

1.把用户信息放在服务器的X里,再给信息一个随机id
2.把随机id发给浏览器
3.后端下次读取到id时,通过x[id]获取用户信息
为什么无法篡改id?
因为id很长,而且随机
这个X又叫session


image.png

代码实现:

登录页面

你可能感兴趣的:(动态服务器(Cookie session))