zoukankan      html  css  js  c++  java
  • cookie和session

      

      谈到cookie与session,就不得不说说HTTP协议了,因为HTTP协议本身是一种“无状态”的,所谓的无状态,就是指当浏览器(客户端)发送一次请求并成功登陆后,下一次发送请求则该服务器不知道你是哪个客户端。所以,今天我们就谈到了cookie机制和session机制。

    cookie(存放在本地、浏览器):

      cookie是一种数据存储技术,是将服务器返回回来的数据(cookie)给浏览器,再将保存到本地。

      当用户第一次通过客户端发送请求登录成功后服务器将返回数据(cookie)给浏览器,将cookie保存到本地。当用户再次的访问服务器时,浏览器会自动将cookie与其他数据发送给服务器,服务器通过校验cookie内容判别为哪个用户。这样就记录了客户端的访问状态。

    session(存放在服务器上):

      session又称“会话控制”,也是一种数据存储技术,存储用户相关的信息。

      当用户发送请求创建session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识 (session id),如果没有,则为客户端创建一个session并且生成一个与此session相关联的session id,服务端将保存这个session,并返回给客户端保存session id。如果客户端的请求里包含有session id,则索引到对应的session并使用。

    用户登陆过程中的cookie和session保持过程

    参考博客原址: https://blog.csdn.net/a754895/article/details/82632747

      

      假设没有设置其他cookie情况下,A在第一次访问B时,B会为A创建一个属于A的session,并在B响应A时通过cookie保存sessionid响应给A。这样A在第二次访问B的时候,A带着cookie(此时里面有sessionid)请求B,B收到请求后会通过cookie的sessionid辨识出属于A的session,这就是整个过程。

    cookie与session的区别:

      1.cookie是存放在本地,而session是存放在服务器上的

      2.session要比cookie安全一些

      3.session占用服务器资源,如果很多用户访问,会增大服务器性能的压力。

    建议:

        将登陆信息等重要信息存放为session中
        其他信息如果需要保留,可以放在cookie中

    提一下token

    token(保存在浏览器Application->Local Storage):

      token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行认证的一个标识。

      当用户第一次登录时,服务端校验用户名和密码,校验成功则生成一个token并将此token返回给客户端,以后客户端只需带上这个token请求即可,无需再次带上用户名和密码。

         参考:https://blog.csdn.net/mydistance/article/details/84545768

         https://www.cnblogs.com/jing99/p/11785070.html

    注意:

      token可预防csrf攻击,cookie跟session不行

        接到请求后,login_required

      先通过get_auth获得request.header.Authorization中的token
      然后调用authenticate,进而调用我们自己定义的verify_token来解析token
      如果解析不出错,就将解密的用户信息从数据库载入服务器内存
      否则返回false
      login_required接到false后调用error_handler进而调用自定义的error_handler,返回身份认证失败的信息,错误码401

      

      现在前后端分离采用:前端:webstorage  后端:token(保存在浏览器Application->Local Storage)

  • 相关阅读:
    JavaSE 学习笔记04丨异常
    Codeforces Round #677 (Div. 3) E、G题解
    JavaSE 学习笔记03丨继承、接口、多态、内部类
    ftp通过了用户验证但是连接超时
    实型变量
    3dmax放样
    画直线算法
    VAE变分自动编码器
    RNN 、LSTM长短期记忆网络
    java比较字符串
  • 原文地址:https://www.cnblogs.com/c-pyday/p/11172837.html
Copyright © 2011-2022 走看看