DRF可浏览API鉴权失败求助:持Admin Token无法访问预订条目
DRF可浏览API鉴权问题解决指南
问题概述
持有管理员账号Token,在Insomnia工具中可正常访问预订条目接口,但DRF可浏览API界面访问时提示“Authentication credentials were not provided.”,无法获取接口数据。
配置错误定位
查看settings.py中的REST_FRAMEWORK配置,发现一处关键拼写错误:
REST_FRAMEWORK = { # 其他配置... 'DEFAULT_AUTHENTICATION_CLASS': ( # 此处应为复数形式,拼写错误 'rest_framework.authentication.TokenAuthentication', 'rest_framework.authentication.SessionAuthentication' ), # 其他配置... }
DRF的全局认证配置项正确名称是DEFAULT_AUTHENTICATION_CLASSES(复数),单数名称不会被框架识别,导致默认认证机制未生效,可浏览API无法处理Token认证逻辑。
修复方案
修正全局认证配置
修改settings.py中的配置项名称为复数,确保框架能加载指定的认证类:REST_FRAMEWORK = { 'DEFAULT_RENDERER_CLASSES': [ 'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', ], 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.TokenAuthentication', 'rest_framework.authentication.SessionAuthentication' ), 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAuthenticated', ] }在可浏览API中配置Token认证
配置修正后刷新页面,按以下步骤操作:- 点击页面右上角的Authentication按钮(参考提供的截图),打开认证设置面板
- 选择Token Authentication作为认证类型
- 按格式输入Token:
Token <你的管理员Token字符串>(示例:Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b) - 保存设置后重新发起请求,即可正常访问接口
补充说明
虽然BookingViewSet已单独指定authentication_classes = [TokenAuthentication],但全局配置的拼写错误会导致可浏览API的认证入口无法正常加载,因此必须优先修正全局配置问题。
内容的提问来源于stack exchange,提问作者Ikenna
相关产品推荐
相关产品推荐

