我有一个不带身份验证的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',
#)
答案 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',
)
现在它将正常工作...