本文为 django-oauth-toolkit 使用记录。(官方文档)
参考阅读:OAuth 2.0 的四种方式
1. 安装
pip install django-oauth-toolkit djangorestframework
2. 使用
创建 Django 项目,目录树如下图:
│ manage.py
├─provider
│ asgi.py
│ settings.py
│ urls.py
│ wsgi.py
│ __init__.py
└─users
│ admin.py
│ apps.py
│ models.py
│ tests.py
│ views.py
└─__init__.py
并进行相关配置:
# provider/settings.py
INSTALLED_APPS = [
...
'oauth2_provider', # add
'users', # add
'rest_framework', # add
]
LOGIN_URL = '/admin/login/'
OAUTH2_PROVIDER = {
'SCOPES': {
'read': 'Read scope',
'write': 'Write scope',
'test': 'test api',
'introspection': 'Introspect token scope', # 认证 和 资源服务器分离时使用
}
}
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'oauth2_provider.contrib.rest_framework.OAuth2Authentication', # 使用OAuth登录认证
)
}
# provider/urls.py
urlpatterns = [
...
path('o/', include('oauth2_provider.urls', namespace='oauth2_provider')), # add
]
3. 编写 API 接口
本次项目中的 User 模型使用 Django 默认的模型。
# users/views.py
from django.contrib.auth.models import User
from oauth2_provider.contrib.rest_framework import TokenHasReadWriteScope
from rest_framework import generics, permissions, serializers
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'email', "first_name", "last_name")
class UserList(generics.ListCreateAPIView):
permission_classes = [permissions.IsAuthenticated, TokenHasReadWriteScope]
queryset = User.objects.all()
serializer_class = UserSerializer
required_scopes = ['test']
class UserDetails(generics.RetrieveAPIView):
permission_classes = [permissions.IsAuthenticated, TokenHasReadWriteScope]
queryset = User.objects.all()
serializer_class = UserSerializer
required_scopes = ['test']
# provider/urls.py
from users.views import UserList # add
urlpatterns = [
...
Django OAuth Toolkit 实战教程

本文详细介绍了如何在Django项目中使用django-oauth-toolkit实现OAuth2.0授权,包括安装、配置、编写API接口、注册应用、访问接口、权限设置、信号处理以及服务分离等步骤。
最低0.47元/天 解锁文章
1548

被折叠的 条评论
为什么被折叠?



