django session以及csrf token的创建过程

本文介绍了Django中session的使用,特别是用户登录过程中的session创建和CSRF token验证。当用户首次访问登录页面时,没有cookie信息。用户登录时,POST请求携带的csrfmiddlewaretoken与cookie中的CSRF TOKEN通过相同的解密算法验证,成功后在响应头中设置新的csrftoken,确保安全性。登录成功后,sessionid存储在cookie中,用户在后续访问中保持登录状态。
摘要由CSDN通过智能技术生成

(列出一个连接:该连接详细介绍了django session的基础用法,有兴趣的看:
https://www.cnblogs.com/zhaof/p/6281468.html
关于上述连接补充一点,request.session是一个既管理db中全部session也处理session_key对应
的当前session的一个对象,当前session的相关数据都存储在request.session._session中,有兴趣可以参看源码/site-packages/django/contrib/session/backends/db.py)

我们都知道session对应的是用户信息,django为登录的用户创建session的过程如下:

1、用户首次打开登录页面时,由于之前没有登录过,所以request头中不包含cookie字段
在这里插入图片描述
在这里插入图片描述

登录页面返回时会让用户设置csrf token
在这里插入图片描述

2、用户输入用户名和密码后,点击登录:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django 中,我们可以使用 session 来实现用户登录。下面是一个简单的示例: 1. 首先,在 `settings.py` 文件中,配置 session 参数: ```python SESSION_ENGINE = 'django.contrib.sessions.backends.db' SESSION_COOKIE_NAME = 'sessionid' SESSION_EXPIRE_AT_BROWSER_CLOSE = True SESSION_SAVE_EVERY_REQUEST = True ``` 这里使用数据库存储 session,并设置了 session 的过期时间为关闭浏览器即过期,每次请求都保存 session。 2. 在视图函数中,实现登录逻辑: ```python from django.contrib.auth import authenticate, login from django.shortcuts import render, redirect def login_view(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return redirect('home') else: message = '用户名或密码错误' else: message = '' return render(request, 'login.html', {'message': message}) ``` 这里使用 `authenticate` 函数验证用户身份,如果验证通过,则使用 `login` 函数登录用户,并跳转到首页。如果验证不通过,则返回登录页面,并提示错误信息。 3. 在模板中,实现登录表单: ```html {% if message %} <p>{{ message }}</p> {% endif %} <form method="post"> {% csrf_token %} <label for="username">用户名:</label> <input type="text" id="username" name="username" required> <label for="password">密码:</label> <input type="password" id="password" name="password" required> <button type="submit">登录</button> </form> ``` 这里使用 `POST` 方法提交用户名和密码,注意要加上 CSRF 令牌。 以上就是使用 session 实现用户登录的基本流程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值