Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Django中验证OAuth2状态?_Django_Python 3.x - Fatal编程技术网

如何在Django中验证OAuth2状态?

如何在Django中验证OAuth2状态?,django,python-3.x,Django,Python 3.x,我查看了,发现发送到端点的一个需求是状态 发送它很简单-但是如何验证您发送的状态与您接收的状态相同 我曾想过使用它,但它似乎是为了查看Django和提高性能 我认为是状态,但它似乎是用于生成表单的 简而言之,如何在Django中验证状态?Django中是否有类似python的方法来实现这一点?用户的应用程序是存储会话相关变量的最佳位置,这里就是这种情况 因此,生成您的状态,并将其存储到用户会话中: request.session['github_state'] = state return re

我查看了,发现发送到端点的一个需求是
状态

发送它很简单-但是如何验证您发送的
状态与您接收的状态相同

我曾想过使用它,但它似乎是为了查看Django和提高性能

我认为是
状态
,但它似乎是用于生成表单的

简而言之,如何在Django中验证
状态
?Django中是否有类似python的方法来实现这一点?

用户的应用程序是存储会话相关变量的最佳位置,这里就是这种情况

因此,生成您的
状态
,并将其存储到用户会话中:

request.session['github_state'] = state
return render(<template with github link>, context={'state': state})

我正在检查会话变量是否为空/None,否则这两个变量都可能为空,检查将通过。

创建会话变量时,可以将其存储在用户的数据库中。收到响应后,只需对照会话中存储的值检查
状态
。请注意,已有的Django软件包已经编写好了,因此您不必亲自经历所有的复杂性。编写一个完全安全的OAuth2客户机(django allauth、python social auth、django oauth toolkit)并不是那么容易。
if request.session.get('github_state') and not request.GET.get('state') == request.session['github_state']:
    # abort here
else:
    code = request.GET.get('code')
    # POST request with code to GitHub to fetch the access token