设置django-oauth-toolkit后无法访问管理面板

时间:2019-05-29 15:21:37

标签: django oauth django-rest-framework

我有一个不带身份验证的pet-api(测试api)。我正在尝试学习如何实现oath2为我的应用程序增加安全性。

  

我想通过使用的请求调用来访问我的应用程序的模型   API,也可以通过Django Admin Panel。

我正在关注本教程: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',
#) 

2 个答案:

答案 0 :(得分:1)

没关系,没有它,我的现在工作良好。我也遵循该指南。只需继续http://127.0.0.1:8000/o/applications

顺便说一句,我也在评论ALLOWED_HOSTS = ['0.0.0.0'],并在users / views.py上,我将所有http://0.0.0.0:8000更改为http://127.0.0.1:8000

现在我得到了:

{
    "access_token": "C2qukd1zWz9aGSp652qbnpYjoT6ZRx",
    "expires_in": 36000,
    "token_type": "Bearer",
    "scope": "read write",
    "refresh_token": "UoI0r9J09F3kcXGO1q3KsYoGHQ9DBw"
}

答案 1 :(得分:1)

代码错误

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',
)

现在它将正常工作...

相关问题