You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

登录Django Admin后访问DRF列表视图提示未提供认证凭证

问题分析与解决方案

核心原因

Django Admin的会话认证和Django REST Framework(DRF)的认证机制相互独立。你虽然登录了Admin后台,但DRF默认未启用SessionAuthentication,导致API请求无法识别Admin的会话凭证,因此返回401 Unauthorized。

解决步骤

1. 配置DRF全局认证类

在项目的settings.py中,新增或修改REST_FRAMEWORK配置项,添加SessionAuthentication到默认认证类:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',  # 可选,支持账号密码弹窗认证
    ],
}

配置后,DRF会识别浏览器的会话Cookie,与Admin共享登录状态。

2. 验证自定义权限类逻辑(可选)

检查你的IsStaffEditorPermission自定义权限类,确保它继承permissions.BasePermission并实现正确的权限判断逻辑,示例如下:

from rest_framework import permissions

class IsStaffEditorPermission(permissions.BasePermission):
    def has_permission(self, request, view):
        # 示例逻辑:仅允许staff用户访问
        return request.user.is_staff

若该类逻辑错误,也可能导致权限验证失败。

3. 测试访问

配置完成后,刷新Admin页面,再直接访问http://127.0.0.1:8000/api/products/,DRF会读取Admin的会话Cookie,认证通过后即可查看产品列表。你也可以在DRF可浏览API页面点击右上角的"Login"按钮,使用Admin账号登录后再访问接口。


内容的提问来源于stack exchange,提问作者Abdullah Shekfeh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 12:24:54