django中Oauth2.0的使用

mac2024-10-04  54

要求

Python 3.4以上Django 2.0以上

安装

django-oauth-toolkit是集成了oauth2.0的实现,而django-cors-middleware是为了解决跨域问题

pip install django-oauth-toolkit django-cors-middleware

将oauth2_provider添加到您的INSTALLED_APPS

INSTALLED_APPS = ( 'django.contrib.admin', ... 'oauth2_provider', 'corsheaders', )

在urls.py中将Django OAuth Toolkit的url配置进来

urlpatterns = [ url(r"^admin/", admin.site.urls)), url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')), # ... ]

在settings.py中CORS中间件,值得注意的是CorsMiddleware尽量放在可以生成响应的中间件前面,这样它才能将CORS标头添加到这些响应中

MIDDLEWARE = ( 'corsheaders.middleware.CorsMiddleware', # ... )

如果要允许来自所有域的CORS请求,则添加

CORS_ORIGIN_ALLOW_ALL = True

最后,记得执行migration命令

python manage.py makemigrations python manage.py migrate

配置登录模板,路径为templates/egistration/login.html,这里的关键是<input type="hidden" name="next" value="{{ next }}">,需要加上一个联系上下文的{{next}}变量.

{% extends "base.html" %} {% block content %} {% if form.errors %} <p>Your username and password didn't match. Please try again.</p> {% endif %} {% if next %} {% if user.is_authenticated %} <p>Your account doesn't have access to this page. To proceed, please login with an account that has access.</p> {% else %} <p>Please login to see this page.</p> {% endif %} {% endif %} <form method="post" action="{% url 'login' %}"> {% csrf_token %} <table> <tr> <td>{{ form.username.label_tag }}</td> <td>{{ form.username }}</td> </tr> <tr> <td>{{ form.password.label_tag }}</td> <td>{{ form.password }}</td> </tr> </table> <input type="submit" value="login"> <input type="hidden" name="next" value="{{ next }}"> </form> {# Assumes you setup the password_reset view in your URLconf #} <p><a href="{% url 'password_reset' %}">Lost password?</a></p> {% endblock %}

测试

启动django服务器,并访问链接: http:// localhost:8000/o/applications / 这时候回弹出对话框,提示你登陆,输入用户名密码登陆(需要自己在django后台创建用户,不赘述,不懂留言,有留必回) 登陆成功之后,就打开了创建app的界面。填入信息,保存即可。 Redirect Uris填写: http://django-oauth-toolkit.herokuapp.com/consumer/exchange/ 这个链接是处理接收到的信息,比如接收到了code等信息,再通过post的方式提交给http://127.0.0.1:8000/o/token/ 提交之后返回授权的token. 10:请求APP授权 http://django-oauth-toolkit.herokuapp.com/consumer/ 打开链接,输入你的client——id,授权地址,点击访问:

提交:

会弹出确认登陆?,点击Authorize,授权,就跳转到了创建app的时候,您填写的回调地址了。 从图片中我们看到,我们已经拿到授权的code了。

继续提交,看到token啦!

最新回复(0)