Detailed explanation of Django-Tastypie's certification and authorization mechanism
Django-Tastypie is a powerful framework for building a RESTFUL API.It provides a flexible certification and authorization mechanism that enables developers to easily protect and limit the access of API.
In this article, we will explore the certification and authorization mechanism of Django-Tastypie, and provide relevant programming code and configuration examples.
1. Certification mechanism:
Certification is a process of verifying user identity and ensuring that users who request APIs are legal.Django-Tastypie provides several common authentication methods, including basic certification, abstract certification, API key certification, etc.
-Base authentication: Send the username and password in the HTTP head for certification.The example code is as follows:
python
from django.contrib.auth.models import User
from tastypie.authentication import BasicAuthentication
class BasicAuthenticationWithInactive(BasicAuthentication):
def is_active(self, request, **kwargs):
# Check whether the user activates
try:
user = User.objects.get(username=request.user.username)
return user.is_active
except User.DoesNotExist:
return False
class MyModelResource(ModelResource):
class Meta:
queryset = MyModel.objects.all()
resource_name = 'mymodel'
authentication = BasicAuthenticationWithInactive()
authorization = Authorization()
-Dylodes certification: Similar to basic certification, but passwords will not be transmitted in text.The example code is as follows:
python
from django.contrib.auth.models import User
from tastypie.authentication import DigestAuthentication
class MyModelResource(ModelResource):
class Meta:
queryset = MyModel.objects.all()
resource_name = 'mymodel'
authentication = DigestAuthentication()
authorization = Authorization()
-API key authentication: Use the pre -generated API key to verify the identity.The example code is as follows:
python
from django.contrib.auth.models import User
from tastypie.authentication import ApiKeyAuthentication
class MyModelResource(ModelResource):
class Meta:
queryset = MyModel.objects.all()
resource_name = 'mymodel'
authentication = ApiKeyAuthentication()
authorization = Authorization()
2. Authorization mechanism:
The authorization determines which users can do what operations, such as reading, creation, updating, or deleting resources.Django-Tastypie uses the authorization class to define the authorization strategy.
-The permissions based on objects: define access permissions for each object.The example code is as follows:
python
from tastypie.authorization import DjangoAuthorization
from tastypie.exceptions import Unauthorized
class MyModelAuthorization(DjangoAuthorization):
def read_detail(self, object_list, bundle):
if bundle.request.user.is_authenticated:
# Check whether the user has the authority to access the object's details
return True
raise unauthorized
def create_detail(self, object_list, bundle):
if bundle.request.user.is_superuser:
# Check whether the user has the permissions of creating objects
return True
raise unauthorized ("You have not created the permissions of the object.")
def update_detail(self, object_list, bundle):
if bundle.request.user == bundle.obj.user:
# Check whether the user is an object owner, you can update
return True
raise unauthorized ("You have not updated the permissions of the object.")
def delete_detail(self, object_list, bundle):
if bundle.request.user.is_superuser:
# Check whether the user has the permissions of the delete object
return True
raise unauthorized ("You did not delete the permissions of the object.")
class MyModelResource(ModelResource):
class Meta:
queryset = MyModel.objects.all()
resource_name = 'mymodel'
authentication = ApiKeyAuthentication()
authorization = MyModelAuthorization()
-The role -based permissions: group users to different roles, characters define different operating permissions.The example code is as follows:
python
from tastypie.authorization import Authorization
from tastypie.exceptions import Unauthorized
class MyModelAuthorization(Authorization):
def read_list(self, object_list, bundle):
if 'read' in bundle.request.user.groups.values_list('name', flat=True):
# Check whether the user belongs to the role of reading permissions
return object_list
raise unauthorized ("You did not read the authority of the resource list.")
def create_detail(self, object_list, bundle):
if 'create' in bundle.request.user.groups.values_list('name', flat=True):
# Check whether the user belongs to the role of creating permissions
return True
raise unauthorized ("You have not created the permissions of the object.")
def update_detail(self, object_list, bundle):
if 'update' in bundle.request.user.groups.values_list('name', flat=True):
# Check whether the user belongs to the role of update authority
return True
raise unauthorized ("You have not updated the permissions of the object.")
def delete_detail(self, object_list, bundle):
if 'delete' in bundle.request.user.groups.values_list('name', flat=True):
# Check whether the user belongs to the role of deleting authority
return True
raise unauthorized ("You did not delete the permissions of the object.")
class MyModelResource(ModelResource):
class Meta:
queryset = MyModel.objects.all()
resource_name = 'mymodel'
authentication = ApiKeyAuthentication()
authorization = MyModelAuthorization()
The above is a detailed description of Django-Tastypie certification and authorization mechanism.You can protect and limit your API according to your needs to choose suitable authentication and authorization methods.Hope this article will help you!