首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

DRF和Knox将登录用户显示为匿名(Django)

DRF和Knox是Django框架中用于构建RESTful API的两个常用扩展库。它们提供了一些功能强大的工具和中间件,用于处理身份验证和授权等方面的问题。

DRF(Django REST framework)是一个强大且灵活的工具集,用于构建基于Django的Web API。它提供了一套简单且一致的接口,用于处理请求和响应,支持多种身份验证方式,并且提供了丰富的序列化、验证和渲染器等功能。DRF的优势包括:

  1. 快速开发:DRF提供了一些快捷的装饰器和类视图,可以快速构建API视图。
  2. 身份验证和授权:DRF支持多种身份验证方式,如基于Token的身份验证、Session身份验证等,并且提供了灵活的权限控制机制。
  3. 序列化和验证:DRF提供了强大的序列化和验证功能,可以方便地将模型数据序列化为JSON等格式,并进行数据验证。
  4. API文档生成:DRF可以自动生成API文档,方便开发者查看和测试API接口。
  5. 社区支持:DRF是一个非常活跃的开源项目,有庞大的社区支持和丰富的文档资源。

Knox是一个用于Django的轻量级身份验证库,它提供了基于Token的身份验证机制。Knox的优势包括:

  1. 安全性:Knox使用随机生成的Token进行身份验证,相对于传统的Session身份验证更加安全可靠。
  2. 扩展性:Knox提供了一套简单的API,可以方便地集成到现有的Django项目中。
  3. 持久登录:Knox支持持久登录功能,用户可以在一段时间内保持登录状态,无需频繁输入用户名和密码。
  4. 客户端支持:Knox提供了相应的客户端库,可以方便地在前端应用中使用Token进行身份验证。

然而,关于DRF和Knox将登录用户显示为匿名的问题,可能是由于配置或代码问题导致的。在Django中,用户登录后应该能够通过request.user来获取当前登录用户的信息。如果DRF和Knox将登录用户显示为匿名,可能是由于以下原因:

  1. 配置错误:请确保在Django的配置文件中正确配置了DRF和Knox相关的中间件和身份验证后端。
  2. 视图代码问题:请检查API视图代码,确保在需要验证用户身份的地方使用了正确的装饰器或Mixin。
  3. Token生成问题:如果使用Token进行身份验证,可能是Token生成或验证的代码有问题。请检查Token生成和验证的逻辑。

总之,DRF和Knox是Django开发中常用的扩展库,用于构建RESTful API和处理身份验证等问题。它们提供了丰富的功能和灵活的配置选项,可以帮助开发者快速构建安全可靠的API。对于DRF和Knox将登录用户显示为匿名的问题,需要仔细检查配置和代码,确保正确使用和配置相关组件。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django REST framework 日志(重写drf_api_logger)

Django REST framework 日志 默认的drf-api-logger没有保存用户并且没有获取日志的接口 本文通过重写drf-api-logger增加访问用户及获取日志的接口 并且增加定时器删除日志...drf_api_logger 文档 优点:您可以 API 信息记录到数据库中或侦听不同用例的记录器信号,也可以同时执行这两项操作。...重写 drf_api_logger其实就是django的一个应用 复制drf_api_logger的源码后执行 pip uninstall drf-api-logger 删除模块(不删也没事) 添加用户信息...在模型中添加用户字段 # models.py from django.contrib.auth import get_user_model User = get_user_model() ··· class...Django-Rest-Knox from knox.auth import TokenAuthentication class APILoggerMiddleware: ··· def __call

38020

DRF系列总结二:脚手架搭建

版本依赖] 二、配置DRF   接下来开始配置DRFrest_framework 加入到INSTALLED_APPS中,修改文件settings.py: INSTALLED_APPS +=...', # 'rest_framework.authentication.BasicAuthentication', ], # 接口权限设置:仅支持登录用户访问 'DEFAULT_PERMISSION_CLASSES...rest_framework.permissions.AllowAny', 'rest_framework.permissions.IsAuthenticated', ], ... } 这里的接口权限策略,去掉了匿名用户的读取权限...,仅允许经过身份验证的注册用户访问接口; 这里的接口认证策略,去掉了HTTP基本认证的方式(接口提供账号密码),仅保留了使用Django默认session后端进行身份验证的机制,适用于与网站在相同的Session...字段,代表当前页总页数,并修改了返回数据的字段items,这样可以统一接口的分页格式,满足前端第三方系统对接口后台分页的绝大部分需求场景。

3.6K60

drf的接口文档生成与管理

中通过swagger生成接口文档的具体实现流程,参考drf swagger文档 3.2 安装django-rest-swagger库 pip3 install django-rest-swagger pip3...': True, # 切换使用Django Auth作为身份验证机制 将其设置True将会在Swagger UI上显示一个登录/注销按钮,并将csrf_tokens发布到API 'USE_SESSION_AUTH...'VALIDATOR_URL': None, } 3.4 配置相关路由 由于上面开启了访问swagger需要登录,因此需要在路由中开启drf默认的登录入口,修改主路由 from rest_framework.schemas.../django-rest-swagger查看更多相关说明 4、drf-yasg(Swagger升级版) 4.1 drf-yasg介绍 参考drf-yasg官网,drf-yasg是基于SwaggerOpenAPI..., 由于 drf-yasg 支持针对不同用户返回不一样的 API 文档(通过public、authentication_classes、permission_classes等参数配置), 因此对于不同用户

4.6K10

让你的Django应用变DRY的几个最佳实践

目前在Python的Web框架中被应用最广泛的就是DjangoDjango REST Framework. 这两种框架都提供了非常健壮的功能,能满足Web开发的各个方面。...总的来说,要使得你的应用很DRY,要遵循以下两个原则: 全局都应用的变更,收拢到一个地方配置 有少数与其他不一样的行为,多数行为定义全局行为,少数行为分别配置,并尽可能简化配置方法。...DjangoDjango REST framework(后简称DRF)提供了海量的全局配置、局部配置,来实现上述思想,但配置项太多了,有时人们往往不知道该如何利用。 一、用户鉴权 1....如果你想接入第三方登录,OAuth登录,都应该自定义一个Backend,无需继承任何基类,只需实现一个authenticate方法,该方法参数与django.contrib.auth.authenticate...的传入参数相同,返回一个用户对象,然后这个Backend添加到AUTHENTICATION_BACKENDS就可以了。

1.7K50

Django+Vue开发生鲜电商平台之7.用户登录注册功能

一、DRF的token基本使用 1.DRF的token登录原理 基于DRF的前后端分离登录与单独使用Django登录的原理不同,不再需要CSRF验证,DRF提供了许多开箱即用的身份验证方案,并且还允许实现自定义方案...身份验证方案始终定义类列表,DRF框架尝试对列表中的每个类进行身份验证,并使用成功进行身份验证的第一个类的返回值设置request.userrequest.auth。...可以看到,在登录之前,state中nametoken均为空,登录之后即变为当前用户用户JWT。...在用户进行登录提交后,通过对用户密码进行比对,但是如果通过手机号码登录,就可能失败,因为登录时obtain_jwt_token查询数据库默认查询的是用户密码,而未查询手机号码,因此需要自定义用户认证方法...'non_fields_error' } 即包含HTTP状态码具体信息,如果是返回的错误信息可以用于对前端的有误区域进行标亮显示,以便于用户重新输入。

4.2K20

使用 React Django REST Framework 构建你的网站

这也使我们可以轻松的未来的任何项目创建移动端 App,因为它们仍然可以复用后端 API。 在本文的剩余部分,我介绍如何配置 React 前端 DRF 后端。...注意我假设你已经熟悉了 React,Redux,DjangoDRF,NPM 等,本篇不是基础教程哦。...---- 后端(The Backend) 除了简单安装 Django DRF 以及设置数据库以外,后端没有太多的工作要做 $ pip3 install django djangorestframework...现在,你已经拥有了一个后端 DRF API:叫 /auth 的 endpoint,访问它可以获得一个身份验证令牌。让我们先配置一个用户,并运行后端服务器以供测试。...你现在可以尝试使用 Auth.js 登录功能来获取我们之前创建的用户身份验令牌。

7K70

DRF进阶之DRF视图常用功能

DRF视图常用功能 DRF视图 DRF视图类介绍 在DRF框架中提供了众多的通用视图基类与扩展类,以简化视图的编写。...View:Django默认的视图基类,负责视图连接到URL,HTTP请求方法的基本调度,之前写类视图一般都用这个。...http://127.0.0.1:8000/myapp/users2/5/ #指定id数据的更新,删除,查看 ViewSet类 GenericAPIView已经完成了许多功能,但会有一个问题,获取所有用户列表单个用户需要分别定义两个视图...:基于Token的认证 RemoteUserAuthentication:基于远程用户的认证 DRF支持权限: IsAuthenticated:只有登录用户才能访问所有API AllowAny:允许所有用户...IsAdminUser:仅管理员用户 IsAuthenticatedOrReadOnly:登录用户可以读写API,未登录用户只读 DRF Session 认证 参考文档: https://www.django-rest-framework.org

4.3K10

如何让 Python 写的 API 接口同时支持 Session Token 认证?

通常情况下,需要用户进行登录的 API,我们都统一使用 Token 来进行认证,这样可以确保接口对多端的支持。...如果让 Django 写的接口既支持 Token 认证,也能兼容 Django 自带的 Session 认证呢?DRF 框架本身就提供了支持。...它一共提供了如下几种认证方案: BasicAuthentication(HTTP Basic 认证):用于根据用户密码进行 HTTP 基础身份认证。...RemoteUserAuthentication(远程用户分组):这种身份认证允许身份认证交给另一个 Web 服务器(通过设置REMOTE_USER变量指定认证服务器地址) 除此之外,我们还能自定义身份认证...需要特别注意的一点是,如果使用 Session 认证,那么在登录页面的时候,需要使用 Django 默认的登录视图进行登录操作。

2.5K20

DRFDjango的认证权限高在哪里

Django可以用LoginRequiredMixinPermissionRequiredMixin给类视图添加认证权限,DRF做了高级封装,提供了更简洁的实现方式。...刚才的错误没有了,但是报了个新的错误:Snippet.owner必须是User实例,给它赋值的是AnonymousUser(匿名用户),导致ValueError了。...登录视图 如果用浏览器打开http://127.0.0.1:8000/snippets/,会发现只有GET方法没有POST,这是因为需要添加DRF登录视图,在tutorial/urls.py中添加rest_framework.urls...其他认证方式 本文使用的认证方式是默认的SessionAuthenticationBasicAuthentication,只要数据库的用户名、密码请求中的用户凭证(用户名、密码)匹配上了,就认为认证成功...东方说 DRF实现认证权限的关键在于新增permissions.py模块,编写class,继承permissions.BasePermission,重写has_permission()或has_object_permission

1.5K20

美多商城项目(十一)

2.组织微博登录网址参数。 3.返回微博组织好的微博登录网址。 3.2获取微博登录用户的access_token API: GET /oauth/sina/user/?...2.获取微博用户的accesstoken(accesstoken是微博登录用户的唯一标示)。 3.如果没有绑定,access_token加密进行返回,登录用户进入绑定页面,完成绑定。...2.图片验证码保存到redis数据库中,设置有效期300s。可以使用图片验证码的id键,图片验证码内容值的形式进行存储。 3.图片验证码返回给前端页面,做出响应。...之前我们的注册登录QQ绑定用户时没有图片验证码的校验,所以我们添加的逻辑代码放到一个if语句判断中。前端发送图片验证码是通过get请求,以查询字符串的形式向后端传递图片验证码。...框架中的英文单词 Django中数据库的相关操作 DRF框架中的英文单词 重点内容回顾-DRF Django相关知识点回顾 美多商城项目导航帖 项目重要技术点介绍

1.5K11

美多商城项目(八)

1.2获取用户,防止触发DRF框架的认证机制,对错误进行捕获。 2.删除用户的购物车记录。 2.1如果用户登录,删除redis中对应的购物车记录。...,cookie中的购物车数据合并到登录用户redis购物车记录中。...5.cookie中购物车记录合并到登录用户的redis记录中 6.组织一个字典,存储cookie购物车记录中添加的商品id对应数量count。...9.遍历解析之后的字典,勾选与未勾选的数据分别加入对应的列表中。 10.合并:组织的字典中keyvalue作为属性值设置到redis对应的hash元素中。...框架中的英文单词 Django中数据库的相关操作 DRF框架中的英文单词 重点内容回顾-DRF Django相关知识点回顾

1.1K20

Django开发常用30个软件包

/ 点评:增强 Django 内置的 django.contrib.auth 模块,提供登录、注册、邮件验证、找回密码等一切用户验证相关的功能。...这个应用支持多种认证体系,比如用户名或电子邮件。一旦用户注册成功,它还可以提供从无需认证到电子邮件认证的多种账户验证的策略。同时,它也支持多种社交账户电子邮件账户。...pip install django-cors-headers 9. Debug toolbar 可在设置面板显示当前请求/响应的各种调试信息。...它允许用户直接编写图文,插入列表表格,并支持文本HTML格式代码输入。...虽然这些库很适合用于社交网站的开发,但也有很大一部分是通用的,可以用于任何用 Django 开发的项目。使用这些库大大提高开发效率生产力。

3.3K20

Django+Vue开发生鲜电商平台之5.使用DRF实现商品列表页过滤

modelserializer实现商品序列化 3.GenericView方式实现商品列表页分页 4.viewsetsrouter实现商品列表页 5.各种View的分析 三、DRF的使用 1.DRF的...1.使用Django View实现商品列表 下面实现通过View类直接商品信息显示到前端。...如果报错__str__ returned non-string (type NoneType),可以通过退出登录后台管理或者修改自定义的用户模型的__str__()方法解决,具体可参考https://blog.csdn.net...三、DRF的使用 1.DRF的RequestResponse类 DRFDjango的RequestResponse类进行了进一步的封装,因此使用起来更方便。...使用Response类只是返回内容协商的Web API响应提供了一个更好的接口,该响应可以呈现为多种格式。 2.DRF过滤器 DRF提供了过滤功能,来实现简单高效的过滤。

5.3K20

CDP-DC中部署Knox

Knox还为访问群集数据执行作业的用户简化了Hadoop安全性。Knox网关被设计反向代理。 本文主要介绍如何在CDP-DC集群上安装部署Knox。...Knox网关多个Hadoop集群提供安全性,具有以下优点: • 简化访问:通过Kerberos封装到集群中来扩展Hadoop的REST / HTTP服务。...Knox支持的服务矩阵 一个支持矩阵,显示Apache Knox对KerberizedNon-Kerberized集群支持的代理SSO服务。 Table 1....以下步骤显示了如何设置Knox代理的基本工作流程。它涉及到定义提供程序配置描述符,这些配置程序描述符用于生成拓扑,可以定义代理(除其他事项外)。...接着我们使用另外一个LDAP用户superuser登录Knox ? 从Knox页面上,目前看不到是哪个用户登录的。

3K30

Django(72)Django认证系统库–djoser「建议收藏」

作用:Django认证系统的REST实现。djoser库提供了一组Django Rest Framework视图,用于处理注册、登录、注销、密码重置帐户激活等基本操作。它适用于自定义用户模型。...Django 3.1 支持的drf版本 Django Rest Framework 3.9 Django Rest Framework 3.10 Django Rest Framework 3.11...在djoser集成到后端应用程序之前,我们有必要去了解下 接下来我们会模拟最简单的流程:注册用户登录注销。...使用接口测试工具postman或者其他工具,输入urldata,就能访问接口了 可以看到我们已经成功创建了一个id2的用户登录查询用户信息 刚才我们只是创建了一个新用户,但是没有进行登录操作...用户登录 我们访问用户登录接口,就可以返回一个token 登录后查询用户信息 然后我们在headers中添加Authorization,对应的值Token 刚刚返回的token值,注意中间要有一个空格

1.8K20
领券