[py][mx]django的cookie和session操作-7天免登录

时间:2022-12-25 21:19:15

浏览器同源策略(same-origin policy)

csrf攻击防御核心点总结

django的cookie和session操作-7天免登录

flask操作cookie&django的seesion和cookie机制

cookie操作参考: http://www.cnblogs.com/lhj588/archive/2011/10/27/2226976.html

这玩意可以实现7天免登录等功能.

session和cookie机制原理和交互过程

交互过程

① 客户端访问,无服务端写入的Cookie
② 服务端的Cookie写入浏览器
③ 浏览器解析Cookie,保存至浏览器文件
④ 客户端访问,有服务端写入的Cookie
⑤ 服务器获取

[py][mx]django的cookie和session操作-7天免登录

[py][mx]django的cookie和session操作-7天免登录

django请求中的cookie

第一次访问服务端会给一个csrf的cookie

[py][mx]django的cookie和session操作-7天免登录

登录完成后,默认给一个为期半个月的cookie 用于访问别的也没使用.

[py][mx]django的cookie和session操作-7天免登录

[py][mx]django的cookie和session操作-7天免登录

django中cookie与session的实现原理

[py][mx]django的cookie和session操作-7天免登录

app默认注册了拦截器session, 浏览器的request先过这个拦截器后,走views逻辑

[py][mx]django的cookie和session操作-7天免登录

之后django_session表里会维护一个记录.

[py][mx]django的cookie和session操作-7天免登录

[py][mx]django的cookie和session操作-7天免登录

django session设置

Django中操作session:

  获取session:request.session[key]     request.session.get(key)
  设置session:reqeust.session[key] = value
  删除session:del request[key]

[py][mx]django的cookie和session操作-7天免登录

users/views.py

def login(request):
if request.method == "POST":
username = request.POST.get("username")
password = request.POST.get("password")
if username == "maotai" and password == "123456":
request.session['name'] = "maotai-session" #定义一个session key
request.session['name2'] = "maotai2-session"#定义一个session key name = request.session.get("name", "") # 获取一个session key
name2 = request.session.get("name2", "")
# return redirect("/")
return render(request, "index.html", {"name": name, "name2": name2}) #将session key返回到前端
else:
return render(request, "login.html")
elif request.method == "GET":
return render(request, "login.html")

登录系统

[py][mx]django的cookie和session操作-7天免登录

可以看到设置了一个cookie字段, 可见我后端无论设置多个session key, 都给前端返回一个cookie

这里我设置了2个
request.session['name'] = "maotai-session" #定义一个session key
request.session['name2'] = "maotai2-session"#定义一个session key

点登录可以获取到key.

templates/login.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>login</title>
</head>
<body>
<div>
<form action="/login/" method="post">
<p><input type="text" placeholder="username" name="username"></p>
<p><input type="text" placeholder="password" name="password"></p>
<p><input type="submit"></p>
{% csrf_token %}
</form>
</div>
</body>
</html>

django cookie默认15天过期时间设置 settings.py

cookie可以有过期时间,这样浏览器就知道什么时候可以删除cookie了。

如果cookie没有设置过期时间,当用户关闭浏览器的时候,cookie就自动过期了。

你可以改变 SESSION_EXPIRE_AT_BROWSER_CLOSE 的设置来控制session框架的这一行为。

缺省情况下, SESSION_EXPIRE_AT_BROWSER_CLOSE 设置为 False ,这样,会话cookie可以在用户浏览器中保持有效达 SESSION_COOKIE_AGE 秒(缺省设置是两周,即1,209,600 秒)。

如果你不想用户每次打开浏览器都必须重新登陆的话,用这个参数来帮你。如果 SESSION_EXPIRE_AT_BROWSER_CLOSE 设置为 True ,当浏览器关闭时,Django会使cookie失效。

[py][mx]django的cookie和session操作-7天免登录

如果SESSION_EXPIRE_AT_BROWSER_CLOSE 设置为true的话,则每次关闭浏览器打开都得重新登录. 默认是false,即每次不必重新登录.

发现个小问题,即使每次重新登录, django_session里的session的旧记录仍然存在.

[py][mx]django的cookie和session操作-7天免登录

[py][mx]django的cookie和session操作-7天免登录的更多相关文章

  1. &lbrack;py&rsqb;&lbrack;mx&rsqb;django处理登录逻辑

    浏览器同源策略(same-origin policy) csrf攻击防御核心点总结 django的cookie和session操作-7天免登录 flask操作cookie&django的see ...

  2. Django之Cookie、Session、CSRF、Admin

    Django之Cookie.Session.CSRF.Admin   Cookie 1.获取Cookie: 1 2 3 4 5 6 request.COOKIES['key'] request.get ...

  3. Django基础cookie和session

    Django基础cookie和session 1.会话跟踪 ​ 什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如给10086打个电话,你就是客户端, ...

  4. Django中cookie和session的操作

    一.cookie和session cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是 ...

  5. Django中Cookie和Session配置和操作

    Cookie Cookie以键值对Key-Value形势进行信息的存储. Cookie基于域名安全,不同域名的Cookie是不能互相访问的 Cookie是存储在浏览器中的一段纯文本信息,建议不要存储敏 ...

  6. Django中的Cookie和Session操作以及CBV

    1.Cookie 平常我们在浏览网页的时候,在需要输入密码的地方,如果已经登陆了一次,并且时间间隔比较近的话,是不需要登陆的,为什么了?这就是Cookie的作用. Cookie(或Cookies)指某 ...

  7. django的cookie和session以及内置信号、缓存

    cookie和session cookie和session的作用: cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话.两者最大的区别是cookie的信息是存放在浏览 ...

  8. django的cookie 和session

    Cookie 1.获取cookie: request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt=' ...

  9. Django组件-cookie与session

    一.会话跟踪技术 1.什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而 ...

随机推荐

  1. php 操作mysql 数据库

    以上是对数据库操作前的准备工作: mysql_num_rows(); //取结果集的行数,一个记录为一行,也就是取记录的条数 mysql_query(); //执行sql语句,返回结果的资源标示符 m ...

  2. 非阻塞同步机制与CAS操作

    锁的劣势 Java在JDK1.5之前都是靠synchronized关键字保证同步的,这种通过使用一致的锁定协议来协调对共享状态的访问,可以确保无论哪个线程 持有守护变量的锁,都采用独占的方式来访问这些 ...

  3. String sql &equals; &quot&semi;update web&lowbar;admin set adminname&equals;&quest; &comma;password&equals;&quest; where id&equals;&quest;&semi;怎么给&OpenCurlyDoubleQuote;?” 传值?

    PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES                                ...

  4. 实例:图像载入、显示、混合与输出[OpenCV 笔记8]

    是的是的,忍着尿意努力更新,就是为了更到wuli男神的部分,当然要把男神放在前面镇楼,欢迎下载配图,具体操作见code wuliEddie.jpg logo.png results.jpg LoadS ...

  5. fedora 20下安装vim的C&plus;&plus;补全插件clang&lowbar;complete

    1.安装clang yum install clang 2.安装clang_complete插件 git clone https://github.com/Rip-Rip/clang_complete ...

  6. poj1088 经典DP

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 88296   Accepted: 33100 Description ...

  7. SOAP报文转成JAVA对象

    在今天以前我还没有用过代码解析过SOAP报文,更别提转成JAVA对象了,今天的任务中报文这个模样的,(为防止数据信息,以下数据我故意打乱了防止泄露什么信息.) <?xml version=&qu ...

  8. NOSQL中的redis缓存数据库

    NOSQL概述 什么是NOSQL? NoSql(NoSQL=Not Only SQL),意思为"不仅仅是SQL",是一个全新的数据库理念,泛指非关系型的数据库. 为什么需要NOSQ ...

  9. ubuntu下安装ftp服务器

    参考文献: 5.4 FTP 服务器 vsftpd - FTP 服务器安装 vsftpd 是可在 Ubuntu 中使用的 FTP 守护程序之一.它在安装.设置和维护方面十分方便.要安装 vsftpd 您 ...

  10. C118&plus;OSMCOMBB嗅探短信

    ubuntu系统:12.04.4, 下载地址:http://cdimage.ubuntu.com/releases/12.04.4/release/ 编译环境下载 : http://pan.baidu ...