首页 > 解决方案 > 设置 django-oauth-toolkit 后无法访问管理面板

问题描述

我有一个没有身份验证的宠物 API(测试 API)。我正在尝试学习如何实现 oath2 以增加我的应用程序的安全性。

我想通过使用 API 的请求调用以及 Django 管理面板来访问我的应用程序的模型。

我正在关注本教程:https ://medium.com/@halfspring/guide-to-an-oauth2-api-with-django-6ba66a31d6d

设置:django-oauth-toolkit

教程说我应该将此代码添加到设置中:

 AUTHENTICATION_BACKENDS = (
     'django.contrib.auth.backends.ModelBackend' # To keep the Browsable API
     'oauth2_provider.backends.OAuth2Backend',
 )

但是当我运行服务器并尝试访问 /admin 时,我得到:

ModuleNotFoundError at /admin/login/
No module named 'django.contrib.auth.backends.ModelBackendoauth2_provider'; 'django.contrib.auth.backends' is not a package

如果我评论:

# 'django.contrib.auth.backends.ModelBackendoauth2_provider'; 

我可以访问登录界面,但说我的用户名或密码错误(不是)。

评论这两行我可以毫无问题地访问管理面板:

#AUTHENTICATION_BACKENDS = (
    # 'django.contrib.auth.backends.ModelBackend' # To keep the Browsable API
    # 'oauth2_provider.backends.OAuth2Backend',
#) 

标签: djangooauthdjango-rest-framework

解决方案


代码有错误,

AUTHENTICATION_BACKENDS = (
 'django.contrib.auth.backends.ModelBackend' # To keep the Browsable API
 'oauth2_provider.backends.OAuth2Backend',
)

(,)后面缺少一个逗号,'django.contrib.auth.backends.ModelBackend'因此它将两行都视为单行,正如您在错误中看到的那样。

所以你需要做的只是

AUTHENTICATION_BACKENDS = (
 'django.contrib.auth.backends.ModelBackend', # To keep the Browsable API
 'oauth2_provider.backends.OAuth2Backend',
)

现在它将起作用...


推荐阅读