如何使用验证码对Django会话进行身份验证?

时间:2020-02-28 20:04:34

标签: django django-rest-framework django-forms captcha django-authentication

我已经建立了一个网站和一个验证码。验证码由模型生成,并显示在模板上。

观看次数

from resumesite.models import Chess_board
import json

def home(request):
    return render(request, 'home.html', {})

def chess(request):
    board = Chess_board()
    data = mark_safe(json.dumps(board.rep))
    return render(request, 'captcha_original.html',{'board': data})

我想将所有请求重定向到验证码,并在验证码完成后重定向到网站,并允许在会话期间(即20分钟)内完全访问。您会如何建议呢?

选项

  1. 通过IP地址进行身份验证的中间件/装饰器(如果用户正在使用代理,我已经读过这将不起作用)
  2. 自定义登录表单,带有修饰符@login_required(login_url="/chess/")
  3. 与REST集成并使用令牌身份验证

1 个答案:

答案 0 :(得分:1)

您将必须使用服务器端会话来处理访问。通过使用服务器端会话,您可以设置到期时间。在会话存储中,有一个名为access = True的变量,您可以在另一个函数中检入该变量是否存在并提供页面。到期时间达到后,该会话将被删除,函数将看到None值。 有关更多信息,请阅读以下文档 https://docs.djangoproject.com/en/3.0/topics/http/sessions/#configuring-the-session-engine