• 客户端会话技术:cookie
  • 服务端会话技术:session
  • 自定义会话技术:token

一.cookie

cookie本身由服务器端生成,通过Response将cookie写到浏览器上,下一次再次访问时,浏览器会根据不同的规则自动携带cookie过来

#服务端设置cookie:
response.set_cookie(key,value[,max_age=None,exprise=None)]
def set_cookie(request):response = HttpResponse("设置Cookie")  #这里response =redirct()或者response =render()也是可以的response.set_cookie('username', 'Rock')return response
"""
HTTP响应报文里面会有:set_cookie:username=Rock"""
#服务端获取cookie:
request.GET.get(key,defaultvalue)
def get_cookie(request):username = request.COOKIES.get("username")return HttpResponse(username)#要求浏览器删除cookie
def logout(request):response = redirect(reverse("app:login"))response.delete_cookie("content")return response

response.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False)

key: cookie的name

value:cookie的值

max_age:cookie存活时间,单位是秒

expires:具体过期时间

path:cookie的访问路径,只有在某个路径下访问才带上该cookie

domain:域名,只有在某个域名下访问

secure:安全

httpoly:如果为True那么js就不能获取cookie

set_signed_cookie(key, value, salt='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=True)设置加密的cookie,salt是秘钥,对value进行了加密处理

response.set_signed_cookie('content', uname, "Rock")

uname = request.get_signed_cookie("content", salt="Rock")

二. session

#session表里面有字段session_key、session_data、expire_date#服务器设置session
def login(request):if request.method == "GET":return render(request, 'two_login.html')elif request.method == "POST":username = request.POST.get("username")request.session["username"] = usernamereturn HttpResponse("登录成功")"""
HTTP响应报文里面会有:set_cookie:sessionid= 一串hash编码(这个是服务器帮你生成的)session表里面的字段session_key: 一串hash编码
session_data : 混淆串 {"username": "jam"}"""#服务器获取session
def mine(request):username = request.session.get("username")return render(request, 'two_mine.html', context=locals())#要求浏览器删除sessionid
response.delete_cookie('sessionid')#删除session表里面的session_data
del request.session['username']#session 和cookie 一起删
def logout(request):response = redirect(reverse('two:mine'))# del request.session['username']# response.delete_cookie('sessionid')# session cookie一起干掉request.session.flush()return response

django中启用SESSION

settings中

INSTALLED_APPS:'django.contrib.sessions'

MIDDLEWARE:'django.contrib.sessions.middleware.SessionMiddleware'

每个HttpRequest对象都有一个session属性,也是一个类字典对象

常用操作:

get(key,default=None) 根据键获取会话的值

clear() 清楚所有会话

flush() 删除当前的会话数据并删除会话的cookie

delete request['session_id'] 删除会话

session.session_key获取session的key

设置数据 :

request.session[‘user’] = username

数据存储到数据库中会进行编码使用的是Base64

三. token

token一般只要是唯一就行,生成方法有很多种

class Student(models.Model):s_name = models.CharField(max_length=16, unique=True)s_password = models.CharField(max_length=128)s_token = models.CharField(max_length=256)#以ip+时间戳+用户名来生成
def generate_token(ip, username):c_time = time.ctime()r = usernamereturn hashlib.new("md5", (ip + c_time + r).encode("utf-8")).hexdigest()

设置cookie存活时间_Django之cookie、session、token相关推荐

  1. 设置cookie存活时间_Cookie的存活时间

    1. 默认情况下,cookie数据保存到内存里,当浏览器关闭后,Cookie数据被销毁 2. 持久化存储: setMaxAge(int seconds) 1. 正数:将Cookie数据写到硬盘的文件中 ...

  2. php获取cookie过期时间,如何获取cookie的过期时间

    要获取cookies过期时间,请使用此简单方法. //#############PART 1############# //expiration time (a*b*c*d) $time = time ...

  3. cookie的细节——1.一次可不可以发送多个cookie?2. cookie在浏览器中保存多长时间?3. cookie能不能存中文?4. cookie共享问题?

    cookie的细节 1. 一次可不可以发送多个cookie? * 可以         * 可以创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可. 2. ...

  4. 【cookie】设置cookie过期时间 超时时间,Cookie 设置 expires

    Cookie是什么: 简单地说,cookie 就是浏览器储存在用户电脑上的一小段文本文件.cookie 是纯文本格式,不包含任何可执行的代码.一个 Web 页面或服务器告知浏览器按照一定规范来储存这些 ...

  5. java cookie过期_Java中Servlet Cookie设置过期时间(expires,max-age)

    Java中Servlet Cookie设置过期时间(expires,max-age) expires或者max-age指定了coolie的生存期,默认情况下coolie是暂时存在的,他们存储的值只在浏 ...

  6. cookies的时限是多少_【cookie】设置cookie过期时间 超时时间,Cookie 设置 expires

    Cookie是什么: 简单地说,cookie 就是浏览器储存在用户电脑上的一小段文本文件.cookie 是纯文本格式,不包含任何可执行的代码.一个 Web 页面或服务器告知浏览器按照一定规范来储存这些 ...

  7. 设置 cookie过期时间

    cookie.setMaxAge(0);//不记录cookie cookie.setMaxAge(-1);//会话级cookie,关闭浏览器失效 cookie.setMaxAge(60*60);//过 ...

  8. java cookie 覆盖吗_Java Web-Cookie和Session

    Java Web-Cookie和Session 会话 会话的概念 一次会话是指浏览器从浏览器第一次给服务器发送请求建立到其中一方断开结束会话的一个过程.它包含多次请求和响应. 会话是用来在一次会话的范 ...

  9. 熬夜彻底搞懂Cookie Session Token JWT

    一切的根源就是因为 HTTP 是一个无状态的协议. HTTP 是一个无状态的协议 什么是无状态呢?就是说这一次请求和上一次请求是没有任何关系的,互不认识的,没有关联的. 看过电影<夏洛特烦恼&g ...

最新文章

  1. 从字符串中提取BCD码,转换为UINT数据并返回
  2. EOSRAM那么火,BANCOR协议白皮书了解一下?
  3. [转载]什么是似然度~maximum likelihood
  4. linux 目标文件格式,Linux工具 - NM目标文件格式分析
  5. 文本挖掘(part6)--共现矩阵
  6. 基于智能的网络空间安全防御
  7. Linux下安装compsoer ,并使用composer安装laravel
  8. 记事本和textarea中的换行
  9. MATLAB基础教程(9)——高级积分运算、二重积分
  10. 华为linux配置ip地址命令是什么,华为S5700基础配置命令
  11. mysql的area_GitHub - nszm/china_area_mysql: 中国5级行政区域mysql库
  12. 徐州计算机应用宿舍,江苏徐州财经高等职业技术学校住宿条件
  13. 软件工程Java毕设 SSM企业公寓宿舍后勤管理系统(含源码+论文)
  14. java ajax是什么东东_Ajax是什么意思,它是在做什么用的?
  15. u3d学习-第一个小游戏
  16. 二分匹配Hopcroft-Carp算法
  17. 正点原子的TPAD键用不了
  18. **最新2018手机号码正则表达式**
  19. android动画送礼物,Android开发仿映客送礼物效果
  20. 如何获得使用PHP的服务器的本地IP地址?

热门文章

  1. oracle database link使用说明
  2. proc文件系统探索 之 根目录下的文件[七]
  3. CentOs 6.3_64静默安装oracle11g_r2
  4. springmvc4 ajax 406,Spring4 MVC 中,jQuery ajax (406 Not Acceptable)
  5. HTML中label的两种使用方法
  6. android分析windowManager、window、viewGroup之间关系
  7. JS一起学05:Date对象、封闭空间、函数传参和封装、获取非行间样式、字符串操作
  8. 深入理解C程序内存布局
  9. 数据结构经典书籍--数据结构与算法分析
  10. 玩转数据结构从入门到进阶三