关键词:
【中文标题】使用 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项目... 查看详情