黑马程序员技术交流社区
标题: 【上海校区】基于Django搭建Oauth2.0服务器 [打印本页]
作者: 会飞的小老虎1 时间: 2020-1-2 17:30
标题: 【上海校区】基于Django搭建Oauth2.0服务器
一. 使用工具Django-oauth-toolkit
https://django-oauth-toolkit.readthedocs.io/en/latest/
二、使用步骤
1.安装必要的包
[Shell] 纯文本查看 复制代码
pip install django-oauth-toolkit
pip install django
2.创建项目,注册app
[Python] 纯文本查看 复制代码
INSTALLED_APPS = (
...
'oauth2_provider',
)
3.配置url
[Python] 纯文本查看 复制代码
urlpatterns = [
...
path('o/', include('oauth2_provider.urls', namespace='oauth2_provider')),
]
4. 迁移数据库
[Shell] 纯文本查看 复制代码
python manage.py migrate oauth2_provider
python manage.py migrate
5. 解决跨域的问题
[Shell] 纯文本查看 复制代码
pip install django-cors-middleware
settings中注册解决跨域的app
[Python] 纯文本查看 复制代码
INSTALLED_APPS = (
...
'oauth2_provider',
'corsheaders',
)
添加中间件
[Python] 纯文本查看 复制代码
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
[Python] 纯文本查看 复制代码
CORS_ORIGIN_ALLOW_ALL = True
6.配置登陆模板,要加上一个联系上下文的{{next}}函数。
登陆模板呢,如果自己有login.html那在适当的位置加上这条语句。
如果没有,就用Django自带的就好。
从django的安装包里获取base.html文件,这是admin后台通用的模板文件,此地不赘述,copy,复制到你的app中的templates/registration/,其中registration需要手动创建,然后创建login.html文件。
[HTML] 纯文本查看 复制代码
{% 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 %}
7:配置contact访问路径
在urls.py文件中,增加一条:
[Python] 纯文本查看 复制代码
urlpatterns = [
path('accounts/', include('django.contrib.auth.urls')),
.....
]
8.启动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.9.请求APP授权http://django-oauth-toolkit.herokuapp.com/consumer/
打开链接,输入你的client——id,授权地址,点击访问:
提交
看到提示信息,你提交的信息都在这里。
确认登陆?
点击Authorize,授权,就跳转到了创建app的时候,您填写的回调地址了。
从图片中我们看到,我们已经拿到授权的code了。
继续提交,看到token
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |