DRF登录认证组件

DRF登录认证组件

1.写一个登录认证类(类名随意,类中的方法名固定)
from app01 import models
from rest_framework import exceptions
from rest_framework.authentication import BaseAuthentication


class Auth(BaseAuthentication):

    def authenticate(self,request):
        token = request.query_params.get('token')
        res = models.Token.objects.filter(token=token).first()
        if res:
            #放回的res.user就是将user添加到request中user中,res会添加到request的auth中
            return res.user,res
        else:
            raise exceptions.APIException('您还没有登录!')
2.全局使用

​ 在setting中配置

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': ['app01.AuthAPI.Auth']
}

​ 每次走视图行数之前都会先走认证类

3.局部禁用(在视图类中添加)
authentication_classes = [ ]

例如:

​ 这样Login视图类就不会使用Auth认证

class Login(APIView):
    authentication_classes = [ ]
    def post(self,request):
        user = models.User.objects.filter(name=request.data.get('name'),pwd=request.data.get('pwd')).first()
        if not user:
            return JsonResponse({'msg':'用户名或者密码错误!'})
        else:
            token = uuid.uuid4()
            models.Token.objects.update_or_create(user=user,defaults={'token':token})
            return JsonResponse({'msg':'登录成功!','token':token})
4.局部使用

​ 如果要实现局部使用就不能在setting中配置了,

​ 在要使用的视图类中添加如下字段

authentication_classes = [Auth, ]

​ 例如:

class Login(APIView):
    authentication_classes = [Auth, ]
    def post(self,request):
        user = models.User.objects.filter(name=request.data.get('name'),pwd=request.data.get('pwd')).first()
        if not user:
            return JsonResponse({'msg':'用户名或者密码错误!'})
        else:
            token = uuid.uuid4()
            models.Token.objects.update_or_create(user=user,defaults={'token':token})
            return JsonResponse({'msg':'登录成功!','token':token})

转载于:https://www.cnblogs.com/jianhaozhou/p/10114842.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django REST Framework (DRF) 是一个用于构建 Web API 的强大工具,它是基于 Django 框架的。DRF 提供了方便的方式来处理 HTTP 请求,定义视图、序列化器、路由以及认证组件,使得开发RESTful API变得更加高效和易于维护。 接口文档是DRF中非常关键的一部分,它帮助开发者、团队成员和外部用户提供对API的清晰理解。在DRF中,你可以使用`rest_framework.authtoken`或`drf_yasg`库(如Swagger UI)来生成详细的API文档。以下是生成和使用DRF接口文档的一些步骤: 1. 安装必要的库(如`drf_yasg`): ```bash pip install djangorestframework drf-yasg ``` 2. 配置settings.py中的SWAGGER设置: ```python INSTALLED_APPS = [ # ... 'drf_yasg', 'rest_framework_swagger', ] ``` 3. 在`urls.py`中包含API和文档的URL路径: ```python from drf_yasg.views import get_schema_view schema_view = get_schema_view(title='Your API Name', public=True) urlpatterns = [ # Your API routes... path('openapi/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'), ] ``` 4. 创建视图和定义序列化器: 使用DRF的ViewSet和Serializer为你的API资源定义行为。 5. 使用`@api_view`装饰器或`@action`方法来定义API操作。 6. 运行服务器并访问`http://yourserver.com/openapi/`,通常会显示一个交互式的Swagger UI页面,其中包含了你的API的所有公开接口和描述。 相关问题: 1. Swagger UI在DRF中起到什么作用? 2. 如何在DRF中使用`@api_view`装饰器定义API? 3. 如何自定义接口文档的主题和样式?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值