5.0 KiB
Django 会话–使用 Django 设置用户会话
在本文中,我们将讨论 Django 会话。会话的行为和为我们提供的结果与使用 cookies 时相似。但是在客户端保存 cookies 会导致安全威胁。因此,为了使这个过程更加安全,我们使用会话。这正是我们将在本文中学到的——如何使用 Django 会话保护我们的网站免受不安全 cookies 的攻击!!
什么是 Django 会话?
从 Django cookies 文章中我们知道,我们可以使用保存在客户端的 cookies 来存储 Web 应用程序的各种有用数据。
但是在客户端存储与 Web App 相关的信息会导致很多安全问题,因此在客户端存储并不是一个好主意。一些可能的威胁包括:
- 黑客可以修改 cookie 数据,并发送它们来潜在地危害我们的网站。
- 我们不能存储用户密码等敏感数据。在饼干里。
- 我们只能在 cookies 中存储有限的数据。大多数浏览器不允许超过 4kb 的数据。
为了解决所有这些问题,我们使用会话,这是一种在服务器端存储 cookies 的机制。因此,所有数据都以 DB 表的形式存储在服务器中,客户端 cookie 只有用于标识的会话 ID。
因此,通过会话,我们可以保存敏感数据,通过会话,我们还可以处理客户端浏览器的无 cookie 策略。
Django 在其框架中预建了一个会话框架。现在让我们了解一下吧。
如何设置 Django 会话?
会话属性作为字典出现在请求数据中。因此,我们用来调用会话的语法是:
request.session.(#other_commands)
1)设置会话
建立会话意味着我们:
- 创建会话
- 然后将会话 ID 作为 cookie 发送给客户端。
设置会话的语法是:
request.session['session_name'] = 'session_value'
2)访问会话
为了取回会话信息,我们调用 get session 属性。然后执行以下任务:
- 从客户端接收 cookie
- 读取会话 ID 的 cookie
- 使用会话 ID 检索会话数据
获取会话的语法是:
#method1
session_value = request.session.get('session_name')
#method2
session_value = request.session['session_name']
3)其他会话属性
除此之外,还有一些其他的会话功能。其中一些列举如下:
- set_expiry(value) :设置会话的到期时间。
- clear)_expired(): 删除过期的会话
- get_expiry_age(): 返回会话到期前剩余的秒数
- get_expiry_date(): 返回会话的到期日期
读够了吧!!现在让我们把手弄脏吧。
Django 课程实践
我们现在将构建一个简单的 web 应用程序,它使用一个视图设置会话,然后使用另一个视图返回会话。
1)对 SetSession 视图进行编码
def SetSession(request):
request.session['book_name'] = 'Sherlock Holmes'
return HttpResponse('The Session has been successfully set')
视图的 URL 路径将是:
path('setsession/',SetSession),
2)编码 GetSession 视图
现在在 SetSession 下面,在 views.py 中添加下面的 GetSession 视图
def GetSession(request):
book_name = request.session.get('book_name')
return HttpResponse(f'The Book Name is: {book_name}')
视图的 URL 路径将是:
path('getsession/',GetSession),
代码的实现
既然我们已经讨论了所需的单个视图,下面是 Views.py 的组合脚本(包括上面的代码)
只需在您的 views.py 中添加以下代码以及 URL 映射,我们就可以开始了:
from django.shortcuts import HttpResponse
def SetSession(request):
request.session['book_name'] = 'Sherlock Holmes'
return HttpResponse('The Session has been successfully set')
def GetSession(request):
book_name = request.session.get('book_name')
return HttpResponse(f'The Book Name is: {book_name}')
最终的 urls.py 文件将如下所示:
from django.contrib import admin
from django.urls import path
from .views import SetSession, GetSession
urlpatterns = [
path('setsession/',SetSession),
path('getsession/',GetSession),
]
好了,现在让我们启动服务器并转到127 . 0 . 0 . 1:8000/setsession/
Set Session
我们已经成功设置了会话。
现在让我们通过**127 . 0 . 0 . 1:8000/getsession/**端点取回它。
Get Session
就是这样!!看看使用进程是多么简单。
结论
就这样,伙计们!!这都是关于 Django 会话以及如何在你的项目中使用它们。有关 Cookie 处理的信息,请查看 Django Cookies 文章。
下一篇文章再见!!在那之前,继续编码吧!!

