使用 Django REST Framework 作为 Django 的身份验证后端

     2023-02-22     178

关键词:

【中文标题】使用 Django REST Framework 作为 Django 的身份验证后端【英文标题】:Using Django REST Framework as an authentication backend for Django 【发布时间】:2016-08-06 11:33:47 【问题描述】:

我目前有一个利用 Django REST 框架的大型 Django 项目。

我有另一个较小的 Django 项目,我想在主项目的基础上构建它,它不直接共享数据库,而是通过 API 获取必要的数据。

我想覆盖较小项目的 AUTHENTICATION_BACKEND 并让它使用较大项目的 API auth 端点作为身份验证器。

基本上流程如下:

    用户尝试在大型 Django-DRF 项目中使用其用户的凭据登录小型 Django 项目。 小型 Django 项目向大型 Django-DRF 项目发送 API 登录请求。 大型 Django-DRF 项目返回 API 令牌和序列化的用户信息。 小型 Django 项目使用来自大型 Django-DRF 项目响应的信息自动将用户添加/更新到其数据库。 小型 Django 项目使用令牌响应用户客户端,以便可以将来自小型 Django 项目页面的 AJAX 请求直接发送到大型 Django-DRF 项目的端点。

是否存在值得为此用例利用的现有插件,还是我应该编写自己的 AUTHENTICATION_BACKEND?

【问题讨论】:

如果您的 DRF 应用程序符合 Oauth2 或某些其他标准身份验证方案,您应该能够轻松找到后端。如果不是,您最好自己编写。这并不难。 【参考方案1】:

听起来您可能想查看django-rest-framework-jwt。这将允许您使用 JWT 作为您的身份验证机制,可以轻松处理您的情况。该项目实际上提供了一个专门用于您想要的端点,verify_jwt_token。根据documentation:

在某些微服务架构中,身份验证由单个服务处理。其他服务委派确认用户登录到此身份验证服务的责任。这通常意味着服务将从用户接收到的 JWT 传递给身份验证服务,并等待确认 JWT 有效,然后再将受保护的资源返回给用户。

所以你的工作流程会是这样的:

    用户通过更大的 API 进行身份验证 用户收到来自身份验证请求的 JWT 用户将 JWT 与每个请求一起发送到较小的 API 较小的 API 在收到 JWT 后,会将其转发到较大 API 中的 verify_jwt_token 端点

【讨论】:

这两个 Django 项目的设置会是什么样子?具体来说,将使用另一个 django 项目接收 jwt 的项目的 settings.py 中的身份验证后端设置。它开箱即用吗?

使用 django-rest-framework-simplejwt 注册后返回令牌

】使用django-rest-framework-simplejwt注册后返回令牌【英文标题】:returntokenafterregistrationwithdjango-rest-framework-simplejwt【发布时间】:2019-02-0114:52:03【问题描述】:我正在使用django-rest-framework-simplejwt,想知道注册用户后是否可以返回令... 查看详情

使用 django-rest-framework 创建对象后返回 id 值

】使用django-rest-framework创建对象后返回id值【英文标题】:Returningidvalueafterobjectcreationwithdjango-rest-framework【发布时间】:2013-09-1920:32:03【问题描述】:我正在使用django-rest-framework通用视图通过POST请求在模型中创建对象。我想知道... 查看详情

我无法使用 Django-Rest-Framework 注册用户

】我无法使用Django-Rest-Framework注册用户【英文标题】:IcannotregisterauserusingDjango-Rest-Framework【发布时间】:2021-04-0621:11:54【问题描述】:我无法使用DjangoRestFramework添加新用户。这是我的models.py代码:classProfile(models.Model):user=models.O... 查看详情

Django Rest Framework 和 django Rest Framework simplejwt 两因素身份验证

】DjangoRestFramework和djangoRestFrameworksimplejwt两因素身份验证【英文标题】:DjangoRestFrameworkanddjangorestframeworksimplejwttwofactorauthentication【发布时间】:2021-09-0915:10:10【问题描述】:我将django3.2.4版与DjangoRestFramework结合使用。我还将https:... 查看详情

Django - 如何使用 Django Rest Framework 按日期过滤?

】Django-如何使用DjangoRestFramework按日期过滤?【英文标题】:Django-HowtofilterbydatewithDjangoRestFramework?【发布时间】:2016-09-0802:41:57【问题描述】:我有一些带有时间戳字段的模型:models.pyclassEvent(models.Model):event_type=models.CharField(max_l... 查看详情

Django Rest Framework:非模型服务

】DjangoRestFramework:非模型服务【英文标题】:DjangoRestFramework:Non-modelservice【发布时间】:2014-06-1009:52:43【问题描述】:我一直在使用django-rest-framework来创建与模型一起使用的服务。现在我需要创建一个服务来接收一些数据,对... 查看详情

如何使用 Django-oauth-toolkit 使用 Django-rest-framework 测试 API 端点以进行身份​​验证

】如何使用Django-oauth-toolkit使用Django-rest-framework测试API端点以进行身份​​验证【英文标题】:HowtotestanAPIendpointwithDjango-rest-frameworkusingDjango-oauth-toolkitforauthentication【发布时间】:2015-02-2220:31:33【问题描述】:我有一个Django-rest-fr... 查看详情

如何使用 django-rest-framework 进行社交登录? [关闭]

】如何使用django-rest-framework进行社交登录?[关闭]【英文标题】:Howexactlyworkasocialloginwithdjango-rest-framework?[closed]【发布时间】:2015-11-2916:50:57【问题描述】:我需要创建一个Web服务来登录用户。此Web服务将从Android或iOS应用程序调... 查看详情

如何使用 TemplateHTMLRenderer 在 Django-REST-Framework 中创建/放置?

】如何使用TemplateHTMLRenderer在Django-REST-Framework中创建/放置?【英文标题】:HowdoIuseTemplateHTMLRendererforCreate/PutinDjango-REST-Framework?【发布时间】:2019-04-1512:45:20【问题描述】:我很难找到正确的方法来初始化TemplateHTMLRenderer以呈现用... 查看详情

Django Rest Framework 中是不是曾经使用过 Django 表单?

】DjangoRestFramework中是不是曾经使用过Django表单?【英文标题】:AreDjangoformseverusedinDjangoRestFramework?DjangoRestFramework中是否曾经使用过Django表单?【发布时间】:2019-10-2815:48:48【问题描述】:DRF教程包含以下关于DRF序列化程序与Djang... 查看详情

为啥使用 django-rest-framework 时不需要 `csrf_exempt`?

】为啥使用django-rest-framework时不需要`csrf_exempt`?【英文标题】:Whyis`csrf_exempt`notneededwhenusingdjango-rest-framework?为什么使用django-rest-framework时不需要`csrf_exempt`?【发布时间】:2022-01-1323:32:30【问题描述】:当我使用Postman发出POST请... 查看详情

在 django-rest-framework-jwt 中存储超过默认信息

】在django-rest-framework-jwt中存储超过默认信息【英文标题】:Storemorethandefaultinformationindjango-rest-framework-jwt【发布时间】:2016-05-1607:55:53【问题描述】:我正在使用Django1.8版并使用django-rest-framework-jwt进行身份验证。认证完成后,我... 查看详情

使用 Django Rest Framework JWT 的手动令牌

】使用DjangoRestFrameworkJWT的手动令牌【英文标题】:ManualtokenwithDjangoRestFrameworkJWT【发布时间】:2017-03-3016:46:37【问题描述】:我目前正在使用DjangoRestFrameworkJWT对项目进行身份验证。我已经实现了BasicAuthentication、SessionAuthentication... 查看详情

使用 Django Rest Framework 注册后如何自动登录?

】使用DjangoRestFramework注册后如何自动登录?【英文标题】:HowtoautologinaftersignupusingDjangoRestFramework?【发布时间】:2016-05-2709:31:26【问题描述】:我正在使用Django1.9和DRF3.0,这是我的看法:classUserList(generics.ListCreateAPIView):queryset=MyU... 查看详情

使用 Django Rest Framework 返回当前用户

】使用DjangoRestFramework返回当前用户【英文标题】:ReturnthecurrentuserwithDjangoRestFramework【发布时间】:2013-03-2402:58:17【问题描述】:我目前正在使用Django开发API。但是,我想创建一个视图,该视图返回具有以下端点的当前用户:/use... 查看详情

无法使用视图名称 (django-rest-framework) 解析超链接关系的 URL

】无法使用视图名称(django-rest-framework)解析超链接关系的URL【英文标题】:CouldnotresolveURLforhyperlinkedrelationshipusingviewname(django-rest-framework)【发布时间】:2018-06-2919:50:26【问题描述】:问题:我收到这样的错误。在/api/users/处配置不... 查看详情

使用 Django REST Framework 读取、更新和创建

】使用DjangoRESTFramework读取、更新和创建【英文标题】:Read,update,andcreatewithDjangoRESTFramework【发布时间】:2015-05-2115:15:54【问题描述】:我有一个ViewSet定义为classItemViewSet(viewsets.ModelViewSet):queryset=Item.objects.all()serializer_class=ItemSeria 查看详情

使用 Django REST Framework 作为 Django 的身份验证后端

】使用DjangoRESTFramework作为Django的身份验证后端【英文标题】:UsingDjangoRESTFrameworkasanauthenticationbackendforDjango【发布时间】:2016-08-0611:33:47【问题描述】:我目前有一个利用DjangoREST框架的大型Django项目。我有另一个较小的Django项目... 查看详情